:root{--main: #c4fbff;--accent: #1f5c6b;--bg: #f1f7f9;--panel: #ffffff;--border: #a6e8f0;--text: #0e2f37;--muted: #4d7a85;--primary: #1f5c6b;--primary-hover: #164451;--danger: #dc2626;--radius: 10px;--shadow: 0 1px 3px rgba(31, 92, 107, .12), 0 1px 2px rgba(31, 92, 107, .08)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background-color:var(--bg);background-image:radial-gradient(1100px 420px at 50% -160px,#c4fbffe6,#c4fbff00 70%);background-repeat:no-repeat;background-attachment:fixed;color:var(--text)}button,select,input{touch-action:manipulation}.btn{border:1px solid transparent;border-radius:8px;padding:8px 14px;font-size:14px;font-weight:500;cursor:pointer;transition:background .15s,border-color .15s,opacity .15s}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-hover)}.btn-secondary{background:#fff;border-color:var(--border);color:var(--text)}.btn-secondary:hover:not(:disabled){background:#f9fafb}.btn-danger{background:var(--danger);color:#fff}.btn-danger-ghost{background:#fff;border-color:#fecaca;color:var(--danger)}.btn-danger-ghost:hover{background:#fef2f2}.btn-link{background:none;border:none;color:var(--primary);padding:6px 8px}.btn-link.light{color:#e5e7eb}.btn.full{width:100%}.muted{color:var(--muted)}.small{font-size:12px}.loading,.empty-state{padding:48px;text-align:center;color:var(--muted)}.empty-state{display:flex;flex-direction:column;align-items:center;gap:16px}.tours-list-page{max-width:1140px;margin:0 auto;padding:28px 24px 48px}.list-header{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:28px;padding:14px 18px;background:#ffffffb3;border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.list-header h1{margin:0;font-size:26px;font-weight:800;letter-spacing:-.02em;color:var(--accent)}.tour-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:22px}.tour-card{background:var(--panel);border:1px solid var(--border);border-radius:16px;box-shadow:0 6px 18px #1f5c6b1a;display:flex;flex-direction:column;overflow:hidden;touch-action:manipulation;cursor:grab;transition:transform .18s ease,box-shadow .18s ease}.tour-card:hover{transform:translateY(-4px);box-shadow:0 16px 34px #1f5c6b33}.tour-card:active{cursor:grabbing}.tour-card-body{padding:16px 18px;flex:1}.tour-card-body h3{margin:0 0 6px;font-size:17px;font-weight:700;color:var(--text)}.tour-card-body p{margin:2px 0}.tour-card-actions{display:flex;align-items:center;gap:8px;padding:12px 16px 16px}.tour-card-actions .btn-primary,.tour-card-actions .btn-locked{flex:1}.tour-card-cover{width:100%;height:168px;object-fit:cover;display:block;-webkit-user-select:none;user-select:none;transition:transform .3s ease}.tour-card:hover .tour-card-cover{transform:scale(1.05)}.tour-card-cover--placeholder{display:flex;align-items:center;justify-content:center;font-size:44px;background:linear-gradient(135deg,#c4fbff,#1f5c6b)}.tour-card--locked .tour-card-cover{filter:grayscale(.7);opacity:.8}.btn-locked{background:#e5e7eb;color:#4b5563;border:1px dashed #9ca3af}.btn-locked:hover{background:#d1d5db}.reorder-hint{margin:-12px 0 12px}.list-notice{background:#fef3c7;border:1px solid #fcd34d;border-radius:8px;padding:10px 14px;cursor:pointer}.cover-edit{display:flex;align-items:center;gap:10px}.cover-edit img{width:96px;height:64px;object-fit:cover;border-radius:8px;border:1px solid var(--border)}.cover-upload-btn{display:inline-block}.landing-list{display:flex;flex-direction:column;gap:10px}.landing-row{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:12px 16px}.landing-row-actions{display:flex;gap:8px;flex-wrap:wrap}.landing-editor{display:grid;grid-template-columns:minmax(0,1fr) 420px;gap:16px;align-items:start}@media (max-width: 900px){.landing-editor{grid-template-columns:1fr}}.landing-form input,.landing-form select,.landing-form textarea{width:100%}.slug-row{display:flex;align-items:center;gap:6px}.slug-prefix{color:var(--muted, #6b7280);font-family:monospace}.req{color:#dc2626;font-weight:700}.landing-block-head{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;border-radius:8px;padding:4px 6px;margin:-4px -6px 4px}.landing-block-head:hover{background:#f3f4f6}.landing-block-head:active{cursor:grabbing}.landing-block-kind{display:inline-flex;align-items:center;gap:6px}.landing-drag-handle{font-size:16px;color:#9ca3af}.landing-block-tools .btn-link{cursor:pointer;touch-action:auto}.bg-swatches{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.bg-swatch{width:28px;height:28px;border-radius:6px;border:2px solid var(--border);cursor:pointer;padding:0}.bg-swatch.active{border-color:var(--primary);box-shadow:0 0 0 2px #1f5c6b4d}.bg-color-input{width:34px;height:34px;padding:0;border:1px solid var(--border);border-radius:6px;background:none;cursor:pointer}.bg-image-row{display:flex;align-items:center;gap:10px;margin-top:8px}.bg-image-thumb{width:80px;height:54px;object-fit:cover;border-radius:8px;border:1px solid var(--border)}.landing-preview-card{background:#ffffffeb;border-radius:12px;padding:12px 14px}.preview-blocks{display:flex;flex-wrap:wrap;gap:0 12px;align-items:flex-start}.preview-block{flex:1 1 100%;min-width:0}.preview-block--half{flex:1 1 calc(50% - 12px)}.preview-block img{width:100%;border-radius:8px;display:block;margin:8px 0}.landing-block-tools .btn-link.active{color:var(--primary, #4f46e5);font-weight:700}.field-label-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.title-align-btn{flex:none;font-size:13px}.landing-block{border:1px solid var(--border);border-radius:10px;padding:10px;margin-bottom:10px;display:flex;flex-direction:column;gap:8px}.landing-block-head{display:flex;justify-content:space-between;align-items:center}.landing-block-kind{font-size:13px;font-weight:600;color:#6b7280}.landing-block-tools .btn-link.danger{color:#dc2626}.landing-image-row{display:flex;align-items:center;gap:10px}.landing-image-row img{width:96px;height:64px;object-fit:cover;border-radius:8px;border:1px solid var(--border)}.landing-add-row{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0 16px}.landing-save-row{display:flex;gap:8px;flex-wrap:wrap}.landing-preview{width:100%;max-width:390px;margin:0 auto;border:1px solid var(--border);border-radius:18px;padding:16px;background:#fff;line-height:1.6;overflow-wrap:break-word}.landing-preview h1{font-size:24px;margin:4px 0 10px}.landing-preview h2{font-size:18px;margin:16px 0 6px}.landing-preview img{width:100%;border-radius:10px;display:block;margin:10px 0}.preview-cta-wrap{text-align:center;margin:18px 0}.preview-cta{display:inline-block;padding:12px 28px;border-radius:12px;background:var(--primary, #4f46e5);color:#fff;font-weight:600}.editor{display:flex;flex-direction:column;height:100vh}.editor-header{display:flex;align-items:center;gap:12px;padding:10px 16px;background:var(--panel);border-bottom:1px solid var(--border)}.tour-title-input{flex:1;font-size:18px;font-weight:600;border:1px solid transparent;border-radius:8px;padding:8px 10px}.tour-title-input:hover,.tour-title-input:focus{border-color:var(--border);outline:none}.editor-header-actions{display:flex;align-items:center;gap:10px}.status-msg{font-size:13px;color:var(--muted)}.dirty-badge{font-size:12px;color:#b45309}.editor-body{flex:1;display:grid;grid-template-columns:380px 1fr;overflow:hidden}.panel{overflow-y:auto;padding:20px}.panel-left{border-right:1px solid var(--border);background:var(--panel)}.panel-right{background:var(--bg)}.panel-title{font-size:15px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0 0 12px}.panel-subtitle{font-size:13px;margin:18px 0 8px;color:var(--text)}.panel-section-head{display:flex;justify-content:space-between;align-items:center}hr{border:none;border-top:1px solid var(--border);margin:18px 0}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px;font-size:13px}.field>span{font-weight:500;color:var(--text)}.field textarea,.field input[type=text]{border:1px solid var(--border);border-radius:8px;padding:8px 10px;font:inherit;resize:vertical}.toggle-field{flex-direction:row;align-items:center;gap:8px}.toggle-field input{width:18px;height:18px}.color-row{display:flex;align-items:center;gap:10px}.color-row input[type=color]{width:42px;height:32px;border:1px solid var(--border);border-radius:6px;padding:0;background:none}.color-presets{display:flex;flex-wrap:wrap;gap:6px}.swatch{width:22px;height:22px;border-radius:6px;border:1px solid var(--border);cursor:pointer}.swatch.active{outline:2px solid var(--primary);outline-offset:1px}.layout-picker{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.layout-option{display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px 6px;border:1px solid var(--border);border-radius:10px;background:#fff;cursor:pointer;position:relative}.layout-option:hover:not(.disabled){border-color:var(--primary)}.layout-option.selected{border-color:var(--primary);box-shadow:0 0 0 2px #4f46e540}.layout-option.disabled{opacity:.5;cursor:not-allowed}.layout-option-name{font-size:11px;text-align:center;line-height:1.2}.layout-option-badge{font-size:9px;text-transform:uppercase;color:var(--danger)}.thumb{width:70px;height:54px;background:#f3f4f6;border-radius:6px;padding:6px;display:flex;flex-direction:column;gap:4px;justify-content:center}.thumb-img{background:#c7d2fe;border-radius:3px;height:20px}.thumb-img.small{flex:1;height:18px}.thumb-row{display:flex;gap:3px}.thumb-line{height:4px;background:#d1d5db;border-radius:2px}.thumb-line.short{width:60%}.thumb-pill{align-self:flex-start;background:#fbbf24;color:#fff;border-radius:8px;font-size:9px;padding:1px 6px}.uploader-grid{display:flex;gap:8px}.uploader-grid.multi .uploader-slot{flex:1}.uploader-slot{min-width:0}.uploader-drop{width:100%;height:90px;border:2px dashed var(--border);border-radius:8px;background:#fafafa;color:var(--muted);cursor:pointer;font-size:13px}.uploader-drop:hover{border-color:var(--primary);color:var(--primary)}.uploader-preview{position:relative;border-radius:8px;overflow:hidden;border:1px solid var(--border)}.uploader-preview img{width:100%;height:90px;object-fit:cover;display:block}.uploader-remove{position:absolute;top:4px;right:4px;background:#0009;color:#fff;border:none;border-radius:50%;width:22px;height:22px;cursor:pointer}.form-error{color:var(--danger);font-size:13px}.form-error-list{color:var(--danger);font-size:13px;margin:8px 0;padding-left:18px}.live-preview{background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);aspect-ratio:3 / 4;max-height:440px;margin-bottom:24px;overflow:hidden}.live-preview-empty{display:flex;height:100%;align-items:center;justify-content:center;color:var(--muted);text-align:center;padding:24px}.render-page{width:100%;height:100%;padding:24px;overflow-y:auto;display:flex;flex-direction:column}.render-body{display:flex;flex-direction:column;gap:16px;margin:auto 0}.render-image{width:100%;max-height:50%;object-fit:cover;border-radius:8px}.render-image--empty{background:#7d7d7d33;border:2px dashed rgba(125,125,125,.4);display:flex;align-items:center;justify-content:center;min-height:120px;border-radius:8px;font-size:13px;opacity:.7}.render-text{font-size:16px;line-height:1.5;white-space:pre-wrap;margin:0}.render-riddle{font-style:italic;font-size:18px}.render-caption{font-size:18px;font-weight:600;text-align:center;margin:0}.render-three{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.render-three .render-image{height:120px;max-height:none}.render-hint{background:#fbbf2433;border-radius:8px;padding:10px 12px;font-size:15px}.render-hint--muted{opacity:.7;font-size:13px}.thumb-strip{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:12px}.thumb-card{position:relative;background:#fff;border:1px solid var(--border);border-radius:8px;overflow:hidden;cursor:grab;box-shadow:var(--shadow)}.thumb-card.active{border-color:var(--primary);box-shadow:0 0 0 2px #4f46e54d}.thumb-order{position:absolute;top:4px;left:4px;z-index:2;background:#111827bf;color:#fff;font-size:11px;width:20px;height:20px;border-radius:50%;display:flex;align-items:center;justify-content:center}.thumb-delete{position:absolute;top:4px;right:4px;z-index:2;background:#dc2626e6;color:#fff;border:none;border-radius:50%;width:20px;height:20px;cursor:pointer;font-size:11px}.thumb-preview{aspect-ratio:3 / 4;overflow:hidden;cursor:pointer}.thumb-preview-scale{width:100%;height:100%;pointer-events:none}.thumb-preview-scale .render-page{padding:8px}.thumb-preview-scale .render-text,.thumb-preview-scale .render-caption{font-size:7px;line-height:1.3}.thumb-preview-scale .render-riddle{font-size:8px}.thumb-preview-scale .render-hint{font-size:7px;padding:3px 4px}.thumb-preview-scale .btn{font-size:7px;padding:2px 4px}.thumb-preview-scale .render-image--empty{min-height:30px;font-size:7px}.thumb-preview-scale .render-three .render-image{height:26px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:#fff;border-radius:var(--radius);padding:24px;max-width:380px;width:90%;box-shadow:0 10px 40px #0003}.modal h3{margin:0 0 8px}.modal-message{color:var(--muted);margin:0 0 20px}.modal-actions{display:flex;justify-content:flex-end;gap:10px}.preview-shell{position:fixed;top:0;right:0;bottom:0;left:0;height:100dvh;background:#1f2937;display:flex;flex-direction:column;color:#f9fafb}.preview-topbar{flex-shrink:0;width:100%;display:flex;align-items:center;flex-wrap:wrap;gap:2px 6px;padding:calc(env(safe-area-inset-top,0px) + 8px) 12px 8px;background:#111827d9;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid rgba(255,255,255,.08);z-index:5}.preview-title{font-weight:600;flex:1;min-width:70px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.preview-counter{font-variant-numeric:tabular-nums;color:#d1d5db}.preview-stage{flex:1 1 0;min-height:0;width:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:12px 12px 16px}.preview-stage>*{margin:0 auto;max-width:480px}.preview-stage .render-page{height:auto;min-height:100%;display:flex;flex-direction:column;justify-content:center;overflow:visible;border-radius:var(--radius);box-shadow:0 10px 40px #0006}.preview-nav{flex-shrink:0;width:100%;display:flex;align-items:center;gap:12px;padding:10px 14px calc(env(safe-area-inset-bottom,0px) + 12px);background:#111827eb;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:1px solid rgba(255,255,255,.08)}.preview-nav .btn{flex:1;min-height:52px;font-size:16px;font-weight:600;border-radius:14px}.preview-nav .btn-secondary{background:#374151;border-color:#4b5563;color:#f9fafb}.preview-nav .btn-secondary:hover:not(:disabled){background:#4b5563}.preview-nav .btn-primary{background:var(--primary);color:#fff}.nav-hint{flex:1;text-align:center;color:#e5e7eb;font-size:14px;line-height:1.35}@media (max-width: 560px){.exit-label{display:none}.preview-topbar .games-toggle,.preview-topbar .btn-link{padding:6px 4px;font-size:13px}}.btn-small{padding:4px 10px;font-size:.8rem}.thumb-gems{display:grid;grid-template-columns:repeat(3,1fr);gap:3px;padding:4px}.thumb-gem{width:100%;aspect-ratio:1;border-radius:3px}.gem-choices{display:flex;flex-wrap:wrap;gap:6px}.gem-choice{font-size:1.3rem;line-height:1;padding:8px;border:2px solid #e5e7eb;border-radius:10px;background:#fff;cursor:pointer;transition:transform .1s,border-color .15s,background .15s}.gem-choice:hover:not(:disabled){transform:scale(1.1)}.gem-choice.picked{border-color:#6366f1;background:#e2f9fd}.gem-choice:disabled{opacity:.35;cursor:not-allowed}.brilliants{width:100%;max-width:360px;margin:0 auto;display:flex;flex-direction:column;gap:10px}.brilliants-hud{display:flex;align-items:center;gap:10px}.brilliants-score{font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}.brilliants-progress{flex:1;height:10px;border-radius:999px;background:#0000001f;overflow:hidden}.brilliants-progress-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,#818cf8,#c084fc,#f472b6);transition:width .4s ease}.brilliants-board{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;padding:10px;border-radius:14px;background:#00000014}.gem{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:1.6rem;line-height:1;border:none;border-radius:10px;background:#ffffffbf;cursor:pointer;transition:transform .15s,box-shadow .15s;-webkit-user-select:none;user-select:none}.gem:hover:not(:disabled){transform:scale(1.08)}.gem--selected{box-shadow:0 0 0 3px #6366f1;transform:scale(1.1);z-index:1}.gem--pop{animation:gem-pop .3s ease forwards}.gem--drop{animation:gem-drop .32s cubic-bezier(.22,.61,.36,1)}.gem--static{cursor:default}@keyframes gem-pop{40%{transform:scale(1.25);filter:brightness(1.6)}to{transform:scale(0);opacity:0}}@keyframes gem-drop{0%{transform:translateY(-260%);opacity:.4}to{transform:translateY(0);opacity:1}}.brilliants-help{text-align:center;margin:0}.win-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 50% 40%,#6366f1eb,#111827f5);animation:win-fade .3s ease}@keyframes win-fade{0%{opacity:0}}.win-card{text-align:center;color:#fff;animation:win-pop .5s cubic-bezier(.34,1.56,.64,1)}@keyframes win-pop{0%{transform:scale(.3);opacity:0}}.win-title{font-size:5rem;font-weight:900;letter-spacing:.05em;background:linear-gradient(90deg,#fde68a,#f9fafb,#fde68a);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 40px rgba(253,230,138,.5)}.win-subtitle{font-size:1.2rem;margin:8px 0 24px;color:#e5e7eb}.win-actions{display:flex;gap:12px;justify-content:center}.win-confetti{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none}.confetti-piece{position:absolute;top:-10%;left:calc(var(--i) * 8.3%);font-size:1.8rem;animation:confetti-fall 2.6s linear infinite;animation-delay:calc(var(--i) * .22s)}@keyframes confetti-fall{to{transform:translateY(120vh) rotate(540deg)}}.gem-img{width:1.5em;height:1.5em;object-fit:contain;display:block;border-radius:4px;pointer-events:none}.gem .gem-img{width:78%;height:78%}.gem-choice--custom{position:relative;display:inline-flex;align-items:center;justify-content:center;cursor:default}.gem-choice--custom .gem-img{width:1.3em;height:1.3em}.gem-choice-remove{position:absolute;top:-7px;right:-7px;width:18px;height:18px;border:none;border-radius:50%;background:#ef4444;color:#fff;font-size:10px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}.gem-choice--upload{font-size:1.1rem;font-weight:700;color:#6366f1;border-style:dashed;min-width:41px}.puzzle{width:100%;max-width:360px;margin:0 auto;display:flex;flex-direction:column;gap:10px}.puzzle-board{display:grid;gap:3px;padding:6px;border-radius:14px;background:#00000014;aspect-ratio:1}.puzzle-tile{border:none;border-radius:6px;cursor:pointer;padding:0;background-repeat:no-repeat;transition:transform .15s,box-shadow .15s,opacity .15s}.puzzle-tile:hover:not(:disabled){transform:scale(1.04);z-index:1}.puzzle-tile--selected{box-shadow:0 0 0 3px #6366f1;transform:scale(1.06);z-index:2}.puzzle-tile--placed{border-radius:0}.puzzle-board--solved{gap:0;padding:0;overflow:hidden;animation:puzzle-glow .8s ease}@keyframes puzzle-glow{30%{box-shadow:0 0 60px #6366f1e6}}.puzzle-board--static{position:relative;padding:0;overflow:hidden}.puzzle-static-img{width:100%;height:100%;object-fit:cover;display:block}.puzzle-grid-lines{position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(255,255,255,.6) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.6) 1px,transparent 1px)}.clicker{width:100%;max-width:360px;margin:0 auto;display:flex;flex-direction:column;gap:10px}.clicker-arena{position:relative;display:flex;align-items:center;justify-content:center;min-height:220px;border-radius:14px;background:#00000014;cursor:pointer;-webkit-user-select:none;user-select:none;overflow:hidden}.clicker-arena--static{cursor:default}.clicker-object{font-size:5rem;line-height:1;pointer-events:none}.clicker-object .gem-img{width:110px;height:110px}.clicker-object--bump{animation:clicker-bump .18s ease}@keyframes clicker-bump{40%{transform:scale(1.25) rotate(-6deg)}}.clicker-pop{position:absolute;font-weight:800;color:#6366f1;text-shadow:0 1px 0 #fff;pointer-events:none;animation:clicker-pop-float .7s ease-out forwards}@keyframes clicker-pop-float{to{transform:translateY(-46px) scale(1.4);opacity:0}}.grid-choices{display:flex;gap:6px}.place{width:100%;max-width:400px;margin:0 auto;display:flex;flex-direction:column;gap:10px}.place-msg{flex:1;text-align:right;font-weight:600;font-size:.9rem}.place-scene{position:relative;border-radius:14px;overflow:hidden;cursor:crosshair;background:#00000014}.place-scene--static{cursor:default}.place-bg{width:100%;display:block;-webkit-user-select:none;user-select:none}.place-object{position:absolute;transform:translate(-50%,-50%);font-size:2.2rem;line-height:1;pointer-events:none;filter:drop-shadow(0 2px 6px rgba(0,0,0,.4));transition:left .2s ease,top .2s ease}.place-object .gem-img{width:44px;height:44px}.place-object--shake{animation:place-shake .45s ease}@keyframes place-shake{20%,60%{transform:translate(-50%,-50%) rotate(-12deg)}40%,80%{transform:translate(-50%,-50%) rotate(12deg)}}.place-object--hit{animation:place-hit .6s ease}@keyframes place-hit{30%{transform:translate(-50%,-50%) scale(1.6)}}.place-hit-ring{position:absolute;left:50%;top:50%;width:10px;height:10px;border:3px solid #34d399;border-radius:50%;transform:translate(-50%,-50%);animation:place-ring-burst .8s ease-out forwards}@keyframes place-ring-burst{to{width:90px;height:90px;opacity:0}}.place-ring{position:absolute;aspect-ratio:1;border:2px dashed rgba(99,102,241,.9);background:#6366f126;border-radius:50%;transform:translate(-50%,-50%);pointer-events:none}.place-tray{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:12px;background:#00000014}.place-tray-object{font-size:2rem;line-height:1}.place-tray-object .gem-img{width:40px;height:40px}.place-picker{cursor:crosshair;border:2px dashed #c7d2fe;border-radius:14px;overflow:hidden}.thumb-img--spot{position:relative}.thumb-spot{position:absolute;right:6px;bottom:2px;font-size:12px}.render-page{position:relative}.movable--editable{cursor:move;border-radius:8px;transition:outline-color .15s;outline:2px dashed transparent;outline-offset:2px}.movable--editable:hover{outline-color:#6366f1b3}.movable--placed{width:max-content;max-width:75%;z-index:1}.movable--placed .render-image{max-height:180px}.movable--placed .render-text,.movable--placed .render-caption{width:max-content;max-width:100%}.live-preview-hint{margin:-6px 0 8px}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(160deg,var(--main) 0%,#ffffff 70%);padding:24px}.auth-card{position:relative;overflow:hidden;width:100%;max-width:420px;background:var(--panel);border:1px solid var(--border);border-radius:20px;box-shadow:0 18px 48px #1f5c6b2e,0 2px 8px #1f5c6b14;padding:36px 32px 30px}.auth-card:before{content:"";position:absolute;top:0;left:0;right:0;height:6px;background:linear-gradient(90deg,var(--main),var(--accent))}.auth-card h1{margin:0 0 4px;font-size:26px;font-weight:800;letter-spacing:-.02em;color:var(--accent)}.auth-card h2{margin:0 0 22px;font-size:15px;font-weight:500;color:var(--muted)}.auth-card input[type=email],.auth-card input[type=password]{width:100%;border:1.5px solid var(--border);border-radius:12px;padding:13px 14px;font-size:15px;background:#fbfeff;transition:border-color .15s,box-shadow .15s}.auth-card .btn.full{padding:14px;font-size:16px;font-weight:700;border-radius:12px;margin-top:4px}.auth-card .btn-primary.full{box-shadow:0 8px 20px #1f5c6b47}.auth-card .btn-primary.full:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 10px 24px #1f5c6b52}.auth-card .field{font-size:14px;margin-bottom:16px}.auth-card .field>span{font-weight:600}.policy-field{align-items:flex-start;line-height:1.4}.policy-field input{margin-top:2px;flex-shrink:0}.auth-switch{text-align:center;margin:16px 0 0}.auth-switch a{color:var(--accent);font-weight:600;text-decoration:none}.auth-switch a:hover{text-decoration:underline}.auth-card input:focus,.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--accent);box-shadow:0 0 0 3px #1f5c6b29;outline:none}.list-header-actions{display:flex;align-items:center;gap:10px}.user-chip{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--muted);background:none;border:1px solid var(--border);border-radius:999px;padding:4px 10px;cursor:pointer}.account-menu{position:relative}.account-dropdown{position:absolute;right:0;top:calc(100% + 6px);background:var(--panel, #fff);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow, 0 6px 20px rgba(0, 0, 0, .12));display:flex;flex-direction:column;min-width:180px;z-index:20;overflow:hidden}.account-dropdown button{background:none;border:none;text-align:left;padding:10px 14px;cursor:pointer;font-size:14px}.account-dropdown button:hover{background:#f3f4f6}.role-badge{font-size:10px;text-transform:uppercase;letter-spacing:.04em;padding:2px 8px;border-radius:999px;font-weight:700}.role-badge--admin{background:#e2f9fd;color:var(--primary)}.role-badge--editor{background:#fef3c7;color:#b45309}.role-select{font-size:12px;padding:2px 6px;border-radius:6px;border:1px solid var(--border)}.lang-switch{display:inline-flex;border:1px solid var(--border);border-radius:999px;overflow:hidden}.lang-opt{border:none;background:none;padding:4px 10px;font-size:12px;font-weight:700;cursor:pointer;color:var(--muted, #6b7280)}.lang-opt.active{background:var(--primary, #4f46e5);color:#fff}.auth-top{display:flex;justify-content:flex-end;margin-bottom:8px}.tr-toolbar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:8px 0 12px}.tr-search{flex:1;min-width:200px;padding:8px 12px;border:1px solid var(--border);border-radius:8px}.tr-onlychanged{display:inline-flex;align-items:center;gap:6px;font-size:14px;color:var(--muted);white-space:nowrap}.tr-list{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:10px;overflow:hidden}.tr-row{display:grid;grid-template-columns:minmax(140px,1fr) 2fr 2fr 36px;gap:8px;align-items:start;padding:8px 10px;border-bottom:1px solid var(--border)}.tr-row:last-child{border-bottom:none}.tr-head{background:#f9fafb;font-weight:700;font-size:13px;position:sticky;top:0}.tr-row.changed{background:#fffbeb}.tr-key{font-size:11px;color:#6b7280;word-break:break-all}.tr-row textarea{width:100%;resize:vertical;min-height:34px;font:inherit;padding:6px 8px;border:1px solid var(--border);border-radius:6px}.role-badge--user{background:#ecfdf5;color:#047857}.check-email{text-align:center}.check-email-icon{font-size:44px;margin:8px 0}.check-email .btn{margin-top:10px}.thumb--blank{align-items:center;border:2px dashed #c7d2fe;background:#fff}.thumb-plus{font-size:22px;color:#6366f1;font-weight:700}.item-text{margin:0;white-space:pre-wrap;line-height:1.3}.item-image{width:100%;display:block;border-radius:8px}.blank-hint{text-align:center;margin:auto}.items-add-row{display:flex;gap:8px}.item-card{position:relative;border:1px solid var(--border);border-radius:10px;padding:10px;margin-top:8px;display:flex;flex-direction:column;gap:8px;background:#fafafa}.item-card textarea{border:1px solid var(--border);border-radius:8px;padding:6px 8px;font:inherit;resize:vertical}.item-card-remove{position:absolute;top:-7px;right:-7px}.item-card-row{display:flex;gap:14px;align-items:center}.item-card-row label{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted)}.item-card-row input[type=number]{width:64px;border:1px solid var(--border);border-radius:6px;padding:4px 6px}.item-card-row input[type=color]{width:34px;height:26px;border:1px solid var(--border);border-radius:6px;padding:0;background:none}.item-card-preview{max-height:70px;max-width:120px;object-fit:contain;border-radius:6px}.item-width-label,.item-width-label input[type=range]{flex:1}.games-toggle{white-space:nowrap}.games-toggle--off{opacity:.65;text-decoration:line-through}.run-hud{display:inline-flex;gap:14px;font-variant-numeric:tabular-nums;color:#fde68a;font-weight:700;white-space:nowrap}.ladder-page,.access-page{max-width:860px;margin:0 auto;padding:32px 24px}.ladder-page h1,.access-page h1{margin:6px 0 0;font-size:26px}.ladder-table{width:100%;border-collapse:collapse;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}.ladder-table th,.ladder-table td{text-align:left;padding:12px 16px;border-bottom:1px solid var(--border)}.ladder-table th{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);background:#fafafa}.ladder-table tr:last-child td{border-bottom:none}.ladder-rank{font-size:18px;width:56px}.ladder-points{font-weight:700;color:var(--primary)}.ladder-time{font-variant-numeric:tabular-nums}.ladder-top-1{background:#fffbeb}.ladder-top-2{background:#f8fafc}.ladder-top-3{background:#fff7ed}.access-list{display:flex;flex-direction:column;gap:14px;margin-top:16px}.access-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}.access-user{display:flex;align-items:center;gap:10px;margin-bottom:10px}.access-tours{display:flex;flex-wrap:wrap;gap:8px}.access-chip{border:1px solid var(--border);border-radius:999px;background:#fff;padding:6px 14px;font-size:13px;cursor:pointer;transition:background .15s,border-color .15s}.access-chip:hover:not(:disabled){border-color:var(--primary)}.access-chip.granted{background:#e2f9fd;border-color:var(--primary);color:var(--primary);font-weight:600}.tour-map{position:relative;min-height:90px;border-radius:12px;background:#0000000f}.tour-map-image{width:100%;display:block;-webkit-user-select:none;user-select:none;border-radius:12px;box-shadow:var(--shadow)}.tour-map-route{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}.map-stop{position:absolute;transform:translate(-50%,-50%);width:34px;height:34px;border-radius:50%;border:3px solid #fff;font-size:15px;font-weight:800;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px #00000059}.map-stop--edit{background:var(--primary);cursor:move}.map-stop--current{background:#f59e0b;animation:stop-pulse 1.4s ease infinite;cursor:pointer}@keyframes stop-pulse{0%,to{box-shadow:0 0 #f59e0b99}50%{box-shadow:0 0 0 12px #f59e0b00}}.map-stop--done{background:#10b981;cursor:pointer}.map-stop--locked{background:#9ca3af;opacity:.75;cursor:not-allowed}.map-stop-label{position:absolute;top:110%;left:50%;transform:translate(-50%);white-space:nowrap;font-size:11px;font-weight:600;color:#111827;background:#ffffffeb;border-radius:6px;padding:1px 7px;pointer-events:none}.map-editor{margin-top:14px}.stop-row{display:flex;align-items:center;gap:6px;margin-top:6px}.stop-row-num{width:22px;height:22px;border-radius:50%;background:var(--primary);color:#fff;font-size:12px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.stop-row input[type=text]{flex:1;border:1px solid var(--border);border-radius:8px;padding:5px 8px;font:inherit;min-width:0}.stop-row .btn-link{padding:2px 4px}.stop-row-remove{position:static;flex-shrink:0}.preview-stage--map>*{max-width:560px}.map-hub{width:100%;min-height:100%;margin:0 auto;display:flex;flex-direction:column;justify-content:center;gap:14px}.map-hub-hint{text-align:center;color:#e5e7eb;margin:0}.map-hub-finish{text-align:center;color:#fff;display:flex;flex-direction:column;gap:10px;align-items:center}.map-hub-finish p{margin:0;font-size:18px;font-weight:700}.field select{border:1px solid var(--border);border-radius:8px;padding:8px 10px;font:inherit;background:#fff}.stop-block{border-bottom:1px dashed var(--border);padding-bottom:8px;margin-top:8px}.stop-page-row{display:flex;align-items:center;gap:8px;margin:4px 0 0 28px;font-size:12px;color:var(--muted)}.stop-page-row select{flex:1;border:1px solid var(--border);border-radius:8px;padding:4px 8px;font-size:12px;background:#fff;min-width:0}.stop-page-row--missing select{border-color:#f59e0b;background:#fffbeb}
