:root{
  --blue:#2587ff;--blue2:#0f65d8;--ink:#101828;--muted:#667085;--line:#d8e0ea;--bg:#f4f7fb;--card:#fff;
  --soft:#eaf3ff;--danger:#c62828;--ok:#147d49;--warn:#a15c00;--nav:#101828;--shadow:0 12px 35px rgba(15,23,42,.08)
}
*{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;min-height:100vh}a{color:inherit;text-decoration:none}button,input,textarea,select{font:inherit}button{touch-action:manipulation}.shell{max-width:1240px;margin:auto;padding:0 18px}
.topbar{position:sticky;top:0;z-index:90;background:rgba(255,255,255,.96);backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}.nav{min-height:72px;display:flex;align-items:center;gap:14px}.brand{display:flex;align-items:center;gap:10px;font-weight:950}.brand small{display:block;color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.09em}.logo-o{width:46px;height:46px;display:grid;place-items:center;background:#fff;border:4px solid #111827;border-radius:10px;color:var(--blue);font-family:Impact,"Arial Black",sans-serif;font-size:34px;line-height:1;text-shadow:2px 2px 0 #cde2ff}.links{display:flex;gap:5px;margin-left:auto;align-items:center}.links a{padding:9px 10px;border-radius:10px;font-size:13px;font-weight:850}.links a:hover,.links a.active{background:var(--soft);color:var(--blue2)}.user-pill{display:flex;align-items:center;gap:8px;background:#f8fafc;border:1px solid var(--line);padding:6px 9px;border-radius:999px;font-size:12px;font-weight:850}.menu-btn{display:none;border:0;background:#eef2f7;border-radius:10px;padding:9px 11px;font-weight:900}.avatar-mini{width:30px;height:30px;border:2px solid #1f2937;border-radius:7px;background:var(--avatar,#9ca3af);display:grid;place-items:center;font-size:12px}.avatar-mini:before{content:'• •\A⌣';white-space:pre;line-height:.7;text-align:center}
main{padding:26px 0 86px}.hero{position:relative;overflow:hidden;display:grid;grid-template-columns:1.2fr .8fr;align-items:center;gap:24px;background:linear-gradient(135deg,#fff 0%,#f4f9ff 55%,#dcecff 100%);border:1px solid var(--line);border-radius:28px;padding:44px;box-shadow:var(--shadow)}.hero:after{content:'';position:absolute;right:-120px;bottom:-180px;width:460px;height:460px;border:50px solid rgba(37,135,255,.08);border-radius:50%}.hero h1{font-size:clamp(42px,6vw,78px);line-height:.9;letter-spacing:-.055em;margin:0 0 18px}.hero p{font-size:18px;color:var(--muted);line-height:1.6;max-width:700px}.hero-art{min-height:280px;display:grid;place-items:center;position:relative;z-index:2}.big-o{width:220px;height:220px;border-radius:40px;border:12px solid #111827;background:#fff;display:grid;place-items:center;font-family:Impact,"Arial Black",sans-serif;font-size:170px;color:var(--blue);box-shadow:18px 18px 0 #b9d7ff;transform:rotate(-3deg)}
.actions,.tabs,.inline{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.actions{margin-top:22px}.btn{border:0;border-radius:12px;padding:10px 15px;background:#eef2f6;color:#111827;font-weight:900;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:42px}.btn:hover{filter:brightness(.98)}.btn.primary{background:var(--blue);color:white}.btn.dark{background:#111827;color:#fff}.btn.danger{background:#fff0f0;color:var(--danger);border:1px solid #ffc9c9}.btn.success{background:#e9f8ef;color:var(--ok);border:1px solid #bce8cc}.btn.small{padding:7px 10px;min-height:34px;font-size:12px}.icon-btn{border:1px solid var(--line);background:#fff;border-radius:9px;cursor:pointer;font-weight:950;min-width:34px;min-height:34px}.blue{color:var(--blue)}
.section-title{display:flex;align-items:end;justify-content:space-between;gap:14px;margin:26px 0 14px}.section-title h2{margin:0;font-size:28px}.section-title p{margin:3px 0 0;color:var(--muted)}.card,.panel,.sidebar,.form-card{background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:0 5px 18px rgba(15,23,42,.035)}.card{padding:19px;margin-bottom:14px}.card h2,.card h3{margin-top:0}.form-card{max-width:620px;margin:16px auto;padding:26px}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.grid.two{grid-template-columns:repeat(2,1fr)}.feature{background:#fff;border:1px solid var(--line);border-radius:18px;padding:19px}.feature .emoji{font-size:28px}.feature h3{margin:9px 0 5px}.feature p{margin:0;color:var(--muted);line-height:1.5}.muted{color:var(--muted)}.meta{font-size:12px;color:var(--muted);font-weight:700}.tiny{font-size:11px}.badge{display:inline-flex;align-items:center;gap:5px;padding:4px 8px;border-radius:999px;background:var(--soft);color:var(--blue2);font-size:11px;font-weight:950}.badge.age{background:#fff0f0;color:#b42318}.badge.teen{background:#fff4dd;color:#8a4d00}.badge.safe{background:#ecfdf3;color:#067647}.badge.staff{background:#f4ebff;color:#6941c6}.badge.pending{background:#fff4dd;color:#8a4d00}.badge.hidden{background:#f2f4f7;color:#475467}.empty{padding:34px;text-align:center;color:var(--muted);background:#fff;border:1px dashed #cbd5e1;border-radius:17px}.flash{padding:12px 14px;border-radius:12px;font-weight:800;margin-bottom:12px}.flash.ok{background:#eaf8ef;color:#126b40}.flash.error{background:#fff0f0;color:#a61b1b}.notice{padding:13px 15px;border-radius:13px;background:#f0f7ff;border:1px solid #cce1ff;color:#174b83;margin-bottom:14px}.notice.warn{background:#fff8eb;border-color:#f6d99c;color:#7a4a05}
.field{margin:0 0 14px}.field label{display:block;font-size:12px;font-weight:900;margin-bottom:6px}.field input,.field textarea,.field select{width:100%;border:1px solid #cbd5e1;border-radius:11px;padding:11px 12px;background:#fff;outline:none}.field textarea{min-height:110px;resize:vertical}.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--blue);box-shadow:0 0 0 3px #dbeafe}.hint{font-size:11px;color:var(--muted);margin-top:5px}.check-row{display:flex;gap:8px;align-items:flex-start;margin:8px 0}.check-row input{margin-top:3px}.check-row label{font-size:13px;font-weight:700}.range-row{display:grid;grid-template-columns:1fr 70px;gap:8px;align-items:center}
.two-col{display:grid;grid-template-columns:310px 1fr;gap:15px}.sidebar,.panel{padding:15px}.list-item{display:flex;align-items:center;gap:9px;padding:10px;border-radius:11px}.list-item:hover,.list-item.active{background:var(--soft)}.chatbox{height:430px;overflow:auto;background:#f7f9fc;border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:8px}.bubble{max-width:76%;padding:9px 11px;background:#fff;border:1px solid var(--line);border-radius:14px}.bubble.mine{align-self:flex-end;background:#ddecff;border-color:#bad8ff}.chat-send{display:flex;gap:8px;margin-top:10px}.chat-send input{flex:1;border:1px solid var(--line);border-radius:12px;padding:11px}.blocked-note{padding:14px;background:#fff4f4;border-radius:12px;color:#942121}
.reels{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.reel{background:#0f172a;color:#fff;border-radius:18px;overflow:hidden}.reel video{width:100%;aspect-ratio:9/16;object-fit:cover;display:block;background:#020617;max-height:560px}.reel-body{padding:12px}.reel-body p{margin:6px 0}.community-head{display:flex;justify-content:space-between;gap:15px;align-items:start}.poll-option{padding:8px 10px;border-radius:10px;background:#f7f9fc;margin:7px 0}.progress{height:7px;background:#e5e7eb;border-radius:999px;overflow:hidden;margin-top:6px}.progress span{display:block;height:100%;background:var(--blue)}.event{border-left:5px solid var(--blue)}.phase{font-size:11px;text-transform:uppercase;letter-spacing:.1em;font-weight:950;color:var(--blue2)}
.games{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.game-card{background:#fff;border:1px solid var(--line);border-radius:18px;overflow:hidden;transition:.15s transform,.15s box-shadow}.game-card:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.game-preview{height:175px;background:linear-gradient(#cfe8ff 0 65%,#88bd6d 65%);position:relative;overflow:hidden}.game-preview:after{content:'';position:absolute;width:80px;height:22px;background:#8495aa;right:22px;top:72px;box-shadow:-80px 34px 0 #64748b}.game-info{padding:15px}.game-info h3{margin:7px 0 5px}.engine-pill{position:absolute;top:10px;left:10px;background:rgba(15,23,42,.84);color:#fff;padding:5px 8px;border-radius:999px;font-size:10px;font-weight:900;z-index:4}.mini-dummy{position:absolute;width:36px;height:66px;left:28%;bottom:24px;z-index:3}.mini-dummy span{display:block;margin:auto;background:#9ca3af;border:2px solid #111827}.mini-dummy .h{width:28px;height:26px;border-radius:4px}.mini-dummy .b{width:34px;height:28px}.mini-dummy .l{width:28px;height:16px;border-top:0}.locked{padding:18px;border:1px dashed #eba9a9;background:#fff8f8;color:#8d2525;border-radius:14px;text-align:center}
.studio-layout{display:grid;grid-template-columns:260px minmax(0,1fr) 290px;gap:14px;align-items:start}.studio-panel{background:#fff;border:1px solid var(--line);border-radius:16px;padding:14px}.toolbox{display:grid;grid-template-columns:1fr 1fr;gap:7px}.tool{border:1px solid var(--line);background:#f8fafc;border-radius:10px;padding:9px 7px;font-weight:850;cursor:pointer}.tool.active{background:var(--soft);border-color:#99c6ff;color:var(--blue2)}.world-wrap{background:#fff;border:1px solid var(--line);border-radius:16px;padding:12px}.world-map{width:100%;display:block;aspect-ratio:16/10;border:1px solid var(--line);border-radius:12px;touch-action:none;cursor:crosshair}.object-list{max-height:400px;overflow:auto}.object-row{display:flex;gap:6px;margin-bottom:6px}.object-row.selected{background:var(--soft);border-radius:10px}.obj-pick{flex:1;border:0;background:transparent;display:grid;grid-template-columns:18px 1fr;grid-template-rows:auto auto;text-align:left;padding:8px;cursor:pointer}.obj-pick small{grid-column:2;color:var(--muted)}.object-dot{width:13px;height:13px;border-radius:4px;margin-top:2px}.inspector-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.inspector-grid label{font-size:10px;font-weight:900}.inspector-grid input{width:100%;padding:7px;border:1px solid var(--line);border-radius:8px}.studio-actions{position:sticky;bottom:75px;background:rgba(255,255,255,.96);border:1px solid var(--line);border-radius:14px;padding:10px;display:flex;justify-content:space-between;gap:8px;margin-top:12px;z-index:20;backdrop-filter:blur(8px)}
.character-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.character-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:14px}.avatar-stage{height:230px;display:grid;place-items:center;background:radial-gradient(circle,#f9fbff,#e8f2ff);border-radius:14px;overflow:hidden}.avatar-builder{--body:#9ca3af;--accent:#2587ff;width:110px;height:180px;position:relative;filter:drop-shadow(0 13px 8px rgba(15,23,42,.18))}.avatar-builder .head{position:absolute;width:64px;height:58px;left:23px;top:7px;background:var(--body);border:4px solid #111827;border-radius:8px}.avatar-builder[data-head=round] .head{border-radius:24px}.avatar-builder[data-head=wide] .head{width:76px;left:17px}.avatar-builder .head:before{content:'•   •';position:absolute;top:11px;left:13px;font-size:13px;font-weight:950}.avatar-builder .head:after{content:'⌣';position:absolute;top:22px;left:23px;font-size:22px}.avatar-builder[data-face=blank] .head:after{content:'—';left:21px}.avatar-builder[data-face=happy] .head:after{content:'◡'}.avatar-builder[data-face=smile] .head:after{content:'⌣'}.avatar-builder .torso{position:absolute;width:72px;height:70px;left:19px;top:62px;background:var(--body);border:4px solid #111827}.avatar-builder .arm{position:absolute;width:25px;height:68px;top:65px;background:var(--accent);border:4px solid #111827}.avatar-builder .arm.left{left:-7px}.avatar-builder .arm.right{right:-7px}.avatar-builder .leg{position:absolute;width:31px;height:58px;top:128px;background:var(--body);border:4px solid #111827}.avatar-builder .leg.left{left:21px}.avatar-builder .leg.right{right:21px}
.game-shell{background:#101828;border-radius:18px;padding:12px;position:relative}.game-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;color:#fff;padding:4px 3px 11px}.game-stage{position:relative;border-radius:13px;overflow:hidden;background:#cfe7ff;min-height:340px}.game-stage canvas{display:block;width:100%;max-width:100%;touch-action:none}.game-3d{width:100%;min-height:340px}.game-3d canvas{width:100%;display:block}.controls-help{text-align:center;color:#cbd5e1;font-size:12px;margin:10px 0 0}.touch-controls{display:none;pointer-events:none;position:absolute;inset:0;z-index:15}.dpad{position:absolute;left:14px;bottom:14px;width:150px;height:150px}.touch-btn{pointer-events:auto;position:absolute;width:52px;height:52px;border-radius:16px;border:1px solid rgba(255,255,255,.25);background:rgba(15,23,42,.64);color:#fff;font-size:22px;font-weight:950;backdrop-filter:blur(5px);touch-action:none}.dpad .up{left:49px;top:0}.dpad .left{left:0;top:49px}.dpad .right{right:0;top:49px}.dpad .down{left:49px;bottom:0}.jump-btn{right:18px;bottom:34px;width:76px;height:76px;border-radius:50%;font-size:14px}.win-overlay{display:none;position:absolute;inset:0;background:rgba(15,23,42,.8);z-index:18;place-items:center;color:#fff;text-align:center}.win-overlay.show{display:grid}.win-overlay h2{font-size:42px;margin:0}.fullscreen-btn{display:inline-flex}.game-meta-grid{display:grid;grid-template-columns:1.3fr .7fr;gap:14px;margin-top:14px}
.safety-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.safety-item{background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px}.admin-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.stat{background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px}.stat b{display:block;font-size:30px}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:14px;background:#fff}.data-table{width:100%;border-collapse:collapse;min-width:760px}.data-table th,.data-table td{padding:10px 12px;border-bottom:1px solid #edf0f4;text-align:left;font-size:12px;vertical-align:top}.data-table th{background:#f8fafc;font-size:11px;text-transform:uppercase;letter-spacing:.05em}.admin-actions{display:flex;gap:5px;flex-wrap:wrap}
.mobile-nav{display:none}footer{border-top:1px solid var(--line);background:#fff;padding:24px 0;color:var(--muted);font-size:12px}
@media(max-width:1050px){.studio-layout{grid-template-columns:220px 1fr}.studio-layout>.studio-panel:last-child{grid-column:1/-1}.character-grid{grid-template-columns:repeat(3,1fr)}.admin-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:850px){body{padding-bottom:72px}.shell{padding:0 13px}.nav{min-height:64px}.brand small{display:none}.menu-btn{display:block;margin-left:auto}.links{display:none;position:absolute;left:10px;right:10px;top:68px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:8px;box-shadow:var(--shadow);margin:0;flex-direction:column;align-items:stretch}.links.open{display:flex}.links a{padding:11px 12px}.user-pill span{display:none}.hero{grid-template-columns:1fr;padding:28px}.hero-art{min-height:210px}.big-o{width:160px;height:160px;font-size:120px}.grid,.reels,.games,.safety-grid{grid-template-columns:1fr 1fr}.two-col{grid-template-columns:1fr}.studio-layout{grid-template-columns:1fr}.studio-layout>.studio-panel:last-child{grid-column:auto}.world-wrap{order:-1}.character-grid{grid-template-columns:repeat(2,1fr)}.game-meta-grid{grid-template-columns:1fr}.touch-controls{display:block}.controls-help{display:none}.mobile-nav{position:fixed;z-index:99;left:7px;right:7px;bottom:7px;display:flex;justify-content:space-around;background:rgba(16,24,40,.97);border:1px solid #334155;border-radius:17px;padding:7px;box-shadow:0 10px 30px rgba(0,0,0,.28)}.mobile-nav a{color:#fff;display:grid;place-items:center;gap:1px;font-size:18px;min-width:47px}.mobile-nav span{font-size:9px;color:#cbd5e1;font-weight:800}.studio-actions{bottom:80px}}
@media(max-width:560px){main{padding-top:18px}.hero{padding:22px;border-radius:20px}.hero h1{font-size:44px}.hero p{font-size:15px}.grid,.grid.two,.reels,.games,.safety-grid,.admin-grid{grid-template-columns:1fr}.form-card{padding:18px}.section-title{align-items:flex-start;flex-direction:column}.community-head{display:block}.character-grid{grid-template-columns:1fr}.studio-panel{padding:11px}.world-wrap{padding:8px}.toolbox{grid-template-columns:repeat(3,1fr)}.tool{font-size:11px}.inspector-grid{grid-template-columns:repeat(2,1fr)}.game-shell{padding:8px;border-radius:14px}.game-stage{min-height:300px}.game-3d{min-height:300px}.dpad{transform:scale(.88);transform-origin:left bottom;left:8px;bottom:8px}.jump-btn{right:12px;bottom:26px;width:68px;height:68px}.game-toolbar{font-size:12px}.btn{width:auto}.studio-actions{align-items:stretch;flex-direction:column}.studio-actions .inline{justify-content:stretch}.studio-actions .btn{flex:1}.chat-send{flex-direction:column}.bubble{max-width:88%}}

/* Object Sandbox 2.1 mobile/tablet reliability fixes */
html,body{max-width:100%;overflow-x:hidden}
#mobileMenuBtn{position:relative;z-index:221;min-width:64px;min-height:44px}
.game-stage,.game-stage canvas,.game-3d,.game-3d canvas{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;overscroll-behavior:contain}
.game-stage:fullscreen{width:100vw;height:100vh;border-radius:0;background:#0f172a}
.game-stage:fullscreen .game-3d,.game-stage:fullscreen>canvas{width:100%!important;height:100%!important;max-height:none!important}
.game-stage:fullscreen .touch-controls{display:block}
.game-toolbar .btn{white-space:nowrap}
.touch-btn{user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}
.touch-btn.is-pressed{transform:scale(.94);background:rgba(37,135,255,.82)}

@media(max-width:1100px){
  body{padding-bottom:calc(78px + env(safe-area-inset-bottom))}
  .menu-btn{display:block;margin-left:auto}
  .links{display:none!important;position:fixed!important;z-index:220;left:10px!important;right:10px!important;top:calc(68px + env(safe-area-inset-top));max-height:calc(100dvh - 92px - env(safe-area-inset-bottom));overflow:auto;background:#fff;border:1px solid var(--line);border-radius:16px;padding:9px;box-shadow:0 22px 70px rgba(15,23,42,.28);margin:0!important;flex-direction:column;align-items:stretch}
  .links.open{display:flex!important}
  .links a{padding:13px 14px;min-height:46px;display:flex;align-items:center}
  body.menu-open:after{content:'';position:fixed;z-index:80;inset:0;background:rgba(15,23,42,.28)}
  .mobile-nav{padding-bottom:calc(7px + env(safe-area-inset-bottom));bottom:0;left:0;right:0;border-radius:17px 17px 0 0}
}

/* Show game controls for real touch/coarse-pointer devices even in tablet landscape. */
@media (hover:none), (pointer:coarse){
  .touch-controls{display:block!important}
  .controls-help{display:none!important}
  .touch-btn{min-width:52px;min-height:52px}
}

@media(max-width:700px){
  .game-shell{margin-left:-6px;margin-right:-6px;padding:7px}
  .game-toolbar{display:grid;grid-template-columns:1fr auto auto;gap:6px;align-items:center}
  .game-toolbar>b{grid-column:1/-1}
  .game-toolbar .btn{padding:7px 9px;min-height:36px;font-size:11px}
  .game-stage{min-height:330px}
  .dpad{left:8px;bottom:10px;transform:scale(.82);transform-origin:left bottom}
  .jump-btn{right:12px;bottom:30px;width:70px;height:70px}
  .win-overlay h2{font-size:30px}
}

@media(max-width:390px){
  .brand>span:last-child{font-size:13px}
  .logo-o{width:40px;height:40px;font-size:29px}
  .user-pill{padding:5px}
  .dpad{transform:scale(.72)}
  .jump-btn{width:62px;height:62px;font-size:11px}
}

@media(orientation:landscape) and (max-height:600px) and (hover:none){
  .topbar{position:relative}
  body{padding-bottom:0}
  .mobile-nav{display:none}
  main{padding-top:8px}
  .game-stage{min-height:calc(100dvh - 100px)}
  .dpad{transform:scale(.72);transform-origin:left bottom}
  .jump-btn{width:64px;height:64px;bottom:16px}
}
