:root{--bg: #16171a;--bg-2: #0d0e10;--panel: rgba(34, 36, 41, .82);--panel-solid: #26282e;--panel-2: rgba(18, 19, 22, .6);--panel-2-solid: #1b1d21;--border: rgba(255, 255, 255, .09);--border-strong: rgba(255, 255, 255, .16);--text: #eceef1;--text-dim: #9aa0a6;--accent: #5b9dff;--accent-2: #9b6bff;--accent-grad: linear-gradient(135deg, #5b9dff 0%, #9b6bff 100%);--danger: #ff6b6b;--radius: 14px;--radius-sm: 8px;--shadow: 0 12px 40px rgba(0, 0, 0, .5), 0 2px 8px rgba(0, 0, 0, .35);--shadow-fab: 0 8px 24px rgba(0, 0, 0, .45);color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:13px;background:var(--bg);color:var(--text);overflow:hidden}.app{position:relative;width:100vw;height:100vh;overflow:hidden}.stage{position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(120% 120% at 50% 0%,#1b1d22,#0b0c0e 70%)}.viewer3d{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.app-logo{position:absolute;top:18px;left:50%;transform:translate(-50%);height:57px;width:auto;z-index:55;pointer-events:none;filter:drop-shadow(0 4px 14px rgba(0,0,0,.5));animation:appLogoIn .5s ease both}@keyframes appLogoIn{0%{opacity:0;transform:translate(-50%) translateY(6px)}to{opacity:1;transform:translate(-50%)}}.floating-panel{position:absolute;top:16px;width:320px;max-height:calc(100vh - 32px);display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);backdrop-filter:blur(18px) saturate(1.4);-webkit-backdrop-filter:blur(18px) saturate(1.4);overflow:hidden;z-index:60}.floating-panel--left{left:16px}.floating-panel--right{right:16px;width:300px}.panel-enter{animation:panelIn .3s cubic-bezier(.2,.85,.25,1) both}@keyframes panelIn{0%{opacity:0;transform:translateY(-10px) scale(.97)}to{opacity:1;transform:none}}.floating-panel__body{flex:1 1 auto;min-height:0;overflow-y:auto;padding:4px;scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}.floating-panel__body::-webkit-scrollbar{width:10px}.floating-panel__body::-webkit-scrollbar-thumb{background:var(--border-strong);border:3px solid transparent;background-clip:padding-box;border-radius:999px}.panel-topbar{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid var(--border);background:linear-gradient(180deg,rgba(255,255,255,.04),transparent)}.brand{display:flex;align-items:center;gap:9px;font-weight:700;font-size:14px;letter-spacing:.2px}.brand__icon{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:6px;background:var(--accent-grad);color:#fff;font-size:13px;line-height:1;box-shadow:0 0 14px #7b82ff8c;animation:markPulse 3.5s ease-in-out infinite}@keyframes markPulse{0%,to{box-shadow:0 0 10px #7b82ff73}50%{box-shadow:0 0 20px #7b82ffd9}}.icon-btn{display:flex;align-items:center;justify-content:center;width:26px;height:26px;padding:0;font-size:18px;line-height:1;color:var(--text-dim);background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);cursor:pointer;transition:background .15s ease,color .15s ease,transform .15s ease}.icon-btn:hover{background:#ffffff14;color:var(--text);transform:scale(1.08)}.panel-fab{position:absolute;top:16px;z-index:60;display:flex;align-items:center;gap:8px;padding:10px 14px;font-size:13px;font-weight:600;color:var(--text);background:var(--panel);border:1px solid var(--border);border-radius:999px;box-shadow:var(--shadow-fab);backdrop-filter:blur(18px) saturate(1.4);-webkit-backdrop-filter:blur(18px) saturate(1.4);cursor:pointer;animation:fabIn .25s cubic-bezier(.2,.85,.25,1) both;transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease}.panel-fab:hover{transform:translateY(-1px);border-color:var(--border-strong);box-shadow:0 10px 30px #0000008c}.panel-fab--left{left:16px}.panel-fab--right{right:16px}.panel-fab__icon{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:6px;background:var(--accent-grad);color:#fff;font-size:12px}@keyframes fabIn{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:none}}.tab-bar{flex:0 0 auto;display:flex;gap:2px;padding:8px 8px 0;border-bottom:1px solid var(--border);overflow-x:auto;scrollbar-width:none}.tab-bar::-webkit-scrollbar{display:none}.tab{position:relative;flex:0 0 auto;padding:8px 12px 10px;font-size:12.5px;font-weight:600;color:var(--text-dim);background:transparent;border:none;border-radius:var(--radius-sm) var(--radius-sm) 0 0;cursor:pointer;transition:color .15s ease,background .15s ease}.tab:hover{color:var(--text);background:#ffffff0d}.tab--active{color:var(--text)}.tab--active:after{content:"";position:absolute;left:10px;right:10px;bottom:-1px;height:2px;border-radius:2px;background:var(--accent-grad);animation:tabUnderline .25s ease both}@keyframes tabUnderline{0%{transform:scaleX(.2);opacity:0}to{transform:scaleX(1);opacity:1}}.tab-fade{animation:fadeUp .22s ease both}@keyframes fadeUp{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.tab-body{display:flex;flex-direction:column;gap:10px;padding:12px 12px 16px}.enable-row{padding:4px 2px;margin-bottom:2px}.enable-row .toggle{font-weight:600}.button-stack{display:flex;flex-direction:column;gap:8px}.seed-field{display:flex;gap:8px;align-items:flex-end}.seed-field>.field{flex:1}.dice-btn{flex:0 0 auto;width:36px;height:32px;padding:0;display:flex;align-items:center;justify-content:center;font-size:16px;line-height:1;transition:transform .15s ease,border-color .15s ease,background .15s ease}.dice-btn:hover{transform:rotate(-14deg) scale(1.08)}.dice-btn:active{transform:rotate(-24deg) scale(.96)}.panel{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--panel-2);overflow:hidden}.panel__header{display:flex;align-items:center;gap:8px;padding:9px 12px;cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:600;transition:background .15s ease}.panel__header:hover{background:#ffffff0d}.panel__header>span:first-child{color:var(--accent);font-size:11px}.panel__body{padding:4px 12px 12px;display:flex;flex-direction:column;gap:10px;animation:fadeUp .18s ease both}.field{display:flex;flex-direction:column;gap:5px}.field__label{display:flex;justify-content:space-between;color:var(--text-dim);font-size:12px}.field__value{color:var(--text);font-variant-numeric:tabular-nums}.row{display:flex;gap:8px}.row>.field{flex:1}input[type=range]{width:100%;height:4px;border-radius:999px;background:var(--panel-2-solid);-moz-appearance:none;appearance:none;-webkit-appearance:none;cursor:pointer;outline:none}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:15px;height:15px;border-radius:50%;background:#fff;border:2px solid var(--accent);box-shadow:0 1px 4px #00000080;transition:transform .12s ease,border-color .12s ease}input[type=range]::-webkit-slider-thumb:hover{transform:scale(1.18);border-color:var(--accent-2)}input[type=range]::-moz-range-thumb{width:15px;height:15px;border-radius:50%;background:#fff;border:2px solid var(--accent);box-shadow:0 1px 4px #00000080}input[type=number],select{background:var(--panel-2-solid);border:1px solid var(--border);color:var(--text);border-radius:var(--radius-sm);padding:6px 8px;width:100%;transition:border-color .15s ease,box-shadow .15s ease}input[type=number]:focus,select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #5b9dff33}input[type=color]{width:100%;height:30px;padding:2px;background:var(--panel-2-solid);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;transition:border-color .15s ease}input[type=color]:hover{border-color:var(--border-strong)}.toggle{display:flex;align-items:center;gap:8px;cursor:pointer}.toggle input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}input[type=file]{font-size:12px;color:var(--text-dim)}button{background:var(--panel-2-solid);border:1px solid var(--border);color:var(--text);border-radius:var(--radius-sm);padding:8px 11px;cursor:pointer;font-size:13px;text-align:left;transition:border-color .15s ease,background .15s ease,transform .1s ease}button:hover{border-color:var(--accent);background:#5b9dff1a}button:active{transform:translateY(1px)}.map-grid{display:flex;flex-direction:column;gap:12px;margin-top:4px}.preview-tile{display:flex;flex-direction:column;gap:5px}.preview-canvas{width:100%;aspect-ratio:1 / 1;border:1px solid var(--border);border-radius:var(--radius-sm);background:repeating-conic-gradient(#2a2a2a,#2a2a2a 25%,#222 0%,#222 50%) 0 / 16px 16px;image-rendering:pixelated;object-fit:contain}.preview-label{color:var(--text-dim);font-size:11px;text-transform:uppercase;letter-spacing:.6px;font-weight:600}.muted{color:var(--text-dim);font-size:12px;line-height:1.4}.warn{color:var(--danger);font-size:12px;line-height:1.4}.splash{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center;background:radial-gradient(120% 120% at 50% 40%,#1b1d22,#0b0c0e 75%);opacity:1;transition:opacity .55s ease;pointer-events:none}.splash--hidden{opacity:0}.splash__logo{width:min(62vw,480px);max-height:70vh;height:auto;object-fit:contain;filter:drop-shadow(0 8px 30px rgba(0,0,0,.45));animation:logoIn .8s cubic-bezier(.2,.85,.25,1) both}@keyframes logoIn{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:none}}.progress-overlay{position:fixed;left:50%;bottom:64px;transform:translate(-50%);z-index:80;pointer-events:none;animation:progressIn .3s ease both}@keyframes progressIn{0%{opacity:0;transform:translate(-50%) translateY(6px)}to{opacity:1;transform:translate(-50%)}}.progress-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:12px 16px;min-width:300px;box-shadow:var(--shadow);backdrop-filter:blur(18px) saturate(1.4);-webkit-backdrop-filter:blur(18px) saturate(1.4)}.progress-row{display:flex;justify-content:space-between;gap:16px;font-size:12px;color:var(--text);margin-bottom:9px}.progress-meta{color:var(--text-dim);font-variant-numeric:tabular-nums}.progress-track{height:6px;background:var(--bg-2);border-radius:999px;overflow:hidden}.progress-fill{height:100%;background:var(--accent-grad);border-radius:999px;transition:width .15s ease}.app-footer{position:absolute;left:50%;bottom:14px;transform:translate(-50%);z-index:58;display:flex;align-items:center;gap:10px;padding:6px 8px 6px 14px;font-size:12px;color:var(--text-dim);background:var(--panel);border:1px solid var(--border);border-radius:999px;box-shadow:var(--shadow-fab);backdrop-filter:blur(18px) saturate(1.4);-webkit-backdrop-filter:blur(18px) saturate(1.4);animation:footerIn .25s cubic-bezier(.2,.85,.25,1) both}@keyframes footerIn{0%{opacity:0;transform:translate(-50%) translateY(6px)}to{opacity:1;transform:translate(-50%)}}.app-footer__sep{color:var(--border-strong)}.app-footer__text{white-space:nowrap}.app-footer__link{color:var(--accent);text-decoration:none}.app-footer__link:hover{text-decoration:underline}.help-btn{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;padding:0;font-size:13px;font-weight:700;line-height:1;color:#fff;background:var(--accent-grad);border:none;border-radius:999px;cursor:pointer;box-shadow:0 0 12px #7b82ff80;transition:transform .15s ease,box-shadow .15s ease}.help-btn:hover{transform:scale(1.1);box-shadow:0 0 18px #7b82ffd9}.help-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;display:flex;align-items:center;justify-content:center;padding:24px;background:#0607098c;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);animation:fadeUp .2s ease both}.help-modal{width:560px;max-width:100%;max-height:calc(100vh - 48px);display:flex;flex-direction:column;background:var(--panel-solid);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.help-modal__header{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--border);background:linear-gradient(180deg,rgba(255,255,255,.04),transparent)}.help-modal__body{padding:6px 20px 20px;overflow-y:auto;line-height:1.5;color:var(--text)}.help-lead{font-size:13.5px}.help-modal__body h4{margin:18px 0 8px;font-size:12px;text-transform:uppercase;letter-spacing:.6px;color:var(--text-dim)}.help-steps,.help-list{margin:0;padding-left:20px}.help-steps li,.help-list li{margin:6px 0}.help-modal__body code{background:#ffffff14;padding:1px 5px;border-radius:5px;font-size:12px}.help-foot{margin-top:18px;padding-top:14px;border-top:1px solid var(--border);font-size:12.5px;color:var(--text-dim)}.help-foot a{color:var(--accent);text-decoration:none}.help-foot a:hover{text-decoration:underline}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}
