:root{--font: "Outfit", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--bg: #f3f4f6;--card-bg: rgba(255, 255, 255, .8);--fg: #0f172a;--muted: #64748b;--accent-x: #2563eb;--accent-x-glow: rgba(37, 99, 235, .15);--accent-o: #db2777;--accent-o-glow: rgba(219, 39, 119, .15);--accent-t: #16a34a;--accent-t-glow: rgba(22, 163, 74, .16);--border: rgba(148, 163, 184, .2);--lb-border: #cbd5e1;--lb-border-active: #2563eb;--lb-bg: #ffffff;--lb-bg-done: #f8fafc;--lb-glow: rgba(37, 99, 235, .18);--cell-bg: #ffffff;--cell-bg-pressed: #e2d9ff;--cell-hover: #f1f5f9;--win-bg: rgba(234, 179, 8, .1);--shadow: 0 10px 25px -5px rgba(0, 0, 0, .05), 0 8px 10px -6px rgba(0, 0, 0, .05);--radius: 8px;--panel-radius: 8px;--lb-radius: 10px;--gap-outer: 8px;--gap-inner: 4px}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #090d16;--card-bg: rgba(15, 23, 42, .6);--fg: #f8fafc;--muted: #94a3b8;--accent-x: #00d2ff;--accent-x-glow: rgba(0, 210, 255, .2);--accent-o: #ff087f;--accent-o-glow: rgba(255, 8, 127, .2);--accent-t: #22c55e;--accent-t-glow: rgba(34, 197, 94, .2);--border: rgba(51, 65, 85, .4);--lb-border: #1e293b;--lb-border-active: #00d2ff;--lb-bg: #0f172a;--lb-bg-done: #070b13;--lb-glow: rgba(0, 210, 255, .22);--cell-bg: #1e293b;--cell-bg-pressed: #1e1b4b;--cell-hover: #334155;--win-bg: rgba(234, 179, 8, .1);--shadow: 0 20px 25px -5px rgba(0, 0, 0, .5), 0 10px 10px -5px rgba(0, 0, 0, .4)}}:root[data-theme=dark]{--bg: #090d16;--card-bg: rgba(15, 23, 42, .6);--fg: #f8fafc;--muted: #94a3b8;--accent-x: #00d2ff;--accent-x-glow: rgba(0, 210, 255, .2);--accent-o: #ff087f;--accent-o-glow: rgba(255, 8, 127, .2);--accent-t: #22c55e;--accent-t-glow: rgba(34, 197, 94, .2);--border: rgba(51, 65, 85, .4);--lb-border: #1e293b;--lb-border-active: #00d2ff;--lb-bg: #0f172a;--lb-bg-done: #070b13;--lb-glow: rgba(0, 210, 255, .22);--cell-bg: #1e293b;--cell-bg-pressed: #1e1b4b;--cell-hover: #334155;--win-bg: rgba(234, 179, 8, .1);--shadow: 0 20px 25px -5px rgba(0, 0, 0, .5), 0 10px 10px -5px rgba(0, 0, 0, .4)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0;height:100%;background:var(--bg);background-image:radial-gradient(at 0% 0%,var(--accent-x-glow) 0px,transparent 50%),radial-gradient(at 100% 100%,var(--accent-o-glow) 0px,transparent 50%);background-attachment:fixed;color:var(--fg);font-family:var(--font);font-size:16px;line-height:1.5;overscroll-behavior:contain;overflow-x:hidden}body{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}.app{display:flex;flex-direction:column;align-items:center;gap:1rem;max-width:560px;margin:0 auto;padding:1.25rem 1rem 2rem;min-height:100dvh}.app-header{position:relative;text-align:center;width:100%;margin-bottom:.5rem;padding-top:.2rem}.header-logo{display:flex;align-items:center;justify-content:flex-start;margin-bottom:.4rem}.header-actions{position:absolute;top:0;right:0;z-index:2;display:flex;align-items:center;gap:.45rem}.theme-toggle,.help-btn{width:38px;height:38px;display:flex;align-items:center;justify-content:center;background:var(--card-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border);border-radius:50%;color:var(--muted);cursor:pointer;box-shadow:var(--shadow)}.theme-toggle{transition:background-color .2s ease,color .2s ease,transform .2s ease,box-shadow .2s ease}.theme-toggle svg{width:18px;height:18px;transition:transform .6s cubic-bezier(.34,1.56,.64,1)}.theme-toggle:hover{color:var(--fg);transform:translateY(-1px);box-shadow:0 6px 15px #0000001a}.theme-toggle:active{transform:scale(.92)}.theme-toggle:hover svg{transform:rotate(20deg)}.title{margin:0 0 .5rem;font-size:2.25rem;font-weight:800;letter-spacing:0;background:linear-gradient(135deg,var(--accent-x) 0%,#a78bfa 50%,var(--accent-o) 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;filter:drop-shadow(0 2px 8px rgba(0,0,0,.1))}.status{margin:.25rem 0 0;font-size:1.05rem;font-weight:500;color:var(--fg);min-height:1.5em}.turn-dot{display:inline-block;width:.6em;height:.6em;margin-right:.45em;border-radius:50%;vertical-align:middle}.turn-dot.mark-x{background:var(--accent-x);box-shadow:0 0 8px var(--accent-x-glow)}.turn-dot.mark-o{background:var(--accent-o);box-shadow:0 0 8px var(--accent-o-glow)}.turn-dot.mark-t{background:var(--accent-t);box-shadow:0 0 8px var(--accent-t-glow)}.status.win{font-weight:700;font-size:1.2rem;animation:win-pop .75s cubic-bezier(.175,.885,.32,1.275)}@keyframes win-pop{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}.status.win.win-x{color:var(--accent-x);text-shadow:0 0 12px var(--accent-x-glow)}.status.win.win-o{color:var(--accent-o);text-shadow:0 0 12px var(--accent-o-glow)}.status.win.win-t{color:var(--accent-t);text-shadow:0 0 12px var(--accent-t-glow)}.status.draw{color:var(--muted)}.moves-counter{margin:.3rem 0 0;font-size:.75rem;color:var(--muted);font-weight:500;font-variant-numeric:tabular-nums;opacity:.6;letter-spacing:.01em}.score-counter{margin:.2rem 0 0;font-size:.78rem;color:var(--fg);display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;font-variant-numeric:tabular-nums}.score-counter-label{color:var(--muted);font-weight:500}.score-x{color:var(--accent-x);font-weight:600}.score-o{color:var(--accent-o);font-weight:600}.score-draw{color:var(--muted);font-weight:600}.score-reset{margin-left:.3rem;background:transparent;border:1px solid var(--border);color:var(--muted);border-radius:999px;padding:.05rem .45rem;font-size:.85rem;line-height:1;cursor:pointer;transition:color .2s,border-color .2s}.score-reset:hover{color:var(--fg);border-color:var(--fg)}.score-reset:active{transform:scale(.95)}.uttt-board{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);gap:var(--gap-outer);width:100%;aspect-ratio:1;max-width:520px;padding:10px;background:var(--card-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--border);border-radius:var(--panel-radius);box-shadow:0 18px 36px -24px #0000008c;transition:transform .45s cubic-bezier(.25,.8,.25,1)}.lb{position:relative;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);gap:var(--gap-inner);padding:6px;background:var(--lb-bg);border:1px solid var(--lb-border);border-radius:var(--lb-radius);transition:box-shadow .25s cubic-bezier(.4,0,.2,1),border-color .25s cubic-bezier(.4,0,.2,1),background .25s cubic-bezier(.4,0,.2,1),transform .25s cubic-bezier(.4,0,.2,1),opacity .25s ease}.uttt-board:has(.lb-forced) .lb:not(.lb-active):not(.lb-done){opacity:.45;filter:saturate(.8)}.lb-active{border-color:var(--lb-border-active);box-shadow:0 0 0 1px var(--lb-border-active),0 0 10px var(--lb-glow)}.lb-forced{border-color:var(--lb-border-active);border-width:2px;transform:translateY(-2px);box-shadow:0 8px 18px -8px var(--lb-glow),0 0 0 1px var(--lb-border-active)}.lb-clickable{cursor:pointer}.lb-clickable.ghost-x{border-color:var(--accent-x);box-shadow:0 0 0 1px var(--accent-x),0 0 12px color-mix(in srgb,var(--accent-x) 35%,transparent)}.lb-clickable.ghost-x.lb-forced{border-width:2px;box-shadow:0 8px 18px -8px color-mix(in srgb,var(--accent-x) 45%,transparent),0 0 0 1px var(--accent-x)}.lb-clickable.ghost-o{border-color:var(--accent-o);box-shadow:0 0 0 1px var(--accent-o),0 0 12px color-mix(in srgb,var(--accent-o) 35%,transparent)}.lb-clickable.ghost-o.lb-forced{border-width:2px;box-shadow:0 8px 18px -8px color-mix(in srgb,var(--accent-o) 45%,transparent),0 0 0 1px var(--accent-o)}.lb-clickable.ghost-t{border-color:var(--accent-t);box-shadow:0 0 0 1px var(--accent-t),0 0 12px color-mix(in srgb,var(--accent-t) 35%,transparent)}.lb-clickable.ghost-t.lb-forced{border-width:2px;box-shadow:0 8px 18px -8px color-mix(in srgb,var(--accent-t) 45%,transparent),0 0 0 1px var(--accent-t)}.lb-done{background:var(--lb-bg-done)}.lb-done-x{border-color:#00d2ff4d}.lb-done-o{border-color:#ff087f4d}.lb-done-t{border-color:color-mix(in srgb,var(--accent-t) 35%,transparent)}.lb-done-draw{border-color:var(--border)}.area-board{grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(4,1fr);max-width:min(720px,calc(100vw - 2rem));gap:6px;padding:8px}.area-lb{grid-template-columns:repeat(4,1fr);grid-template-rows:repeat(4,1fr);gap:2px;padding:4px;border-radius:8px}.area-lb-decided:not(.area-lb-full) .area-badge{opacity:.34}.area-badge{padding:18%}.area-split-badge{font-size:clamp(.9rem,2.2vw,1.35rem);font-weight:800;letter-spacing:0}.lb-winning{box-shadow:0 0 0 4px var(--win-bg),0 0 25px #eab30866;border-color:#eab308;animation:lb-pulse 1.8s infinite ease-in-out}@keyframes lb-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}.lb-badge{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;pointer-events:none;-webkit-user-select:none;user-select:none;z-index:5;padding:15%;background:#090d164d;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);border-radius:calc(var(--lb-radius) - 2px);animation:badge-fade-in .525s cubic-bezier(.19,1,.22,1) forwards}@keyframes badge-fade-in{0%{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}.lb-badge svg{width:100%;height:100%;filter:drop-shadow(0 2px 10px rgba(0,0,0,.3))}.uttt-cell{position:relative;background:var(--cell-bg);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 2px 4px #0000000d;color:var(--fg);cursor:pointer;display:flex;align-items:center;justify-content:center;padding:10%;transition:background-color .2s cubic-bezier(.4,0,.2,1),border-color .2s cubic-bezier(.4,0,.2,1),transform .1s cubic-bezier(.4,0,.2,1),box-shadow .2s cubic-bezier(.4,0,.2,1);user-select:none;-webkit-user-select:none;min-height:0;min-width:0;aspect-ratio:1}.uttt-cell:disabled{cursor:default;box-shadow:none}.uttt-cell svg{width:100%;height:100%}.uttt-cell.marked{box-shadow:0 2px 8px #0000001a}.mark-x{color:var(--accent-x)}.mark-o{color:var(--accent-o)}.mark-draw{color:var(--muted)}.mark-t{color:var(--accent-t)}.path-x,.path-o,.path-draw,.path-t{stroke-dasharray:100;stroke-dashoffset:100;animation:draw-path .45s cubic-bezier(.4,0,.2,1) forwards}.path-x-2{animation-delay:.15s}@keyframes draw-path{to{stroke-dashoffset:0}}.uttt-cell.last{background:var(--lb-glow);border-color:var(--lb-border-active);box-shadow:0 0 8px var(--lb-glow)}.uttt-cell.hint{border-color:var(--accent-x);box-shadow:0 0 0 2px var(--accent-x),0 0 12px var(--accent-x);animation:hint-pulse 1.5s ease-in-out infinite;background:color-mix(in srgb,var(--accent-x) 10%,var(--cell-bg))}@keyframes hint-pulse{0%,to{box-shadow:0 0 0 2px var(--accent-x),0 0 8px var(--accent-x)}50%{box-shadow:0 0 0 2px var(--accent-x),0 0 18px var(--accent-x)}}.uttt-cell.hint:after{content:"?";position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:1.5rem;font-weight:700;color:var(--accent-x);pointer-events:none;opacity:.7}.hint-btn.active{background:var(--accent-x);color:#fff;border-color:var(--accent-x)}.hint-explanation{width:100%;background:color-mix(in srgb,var(--accent-x) 8%,var(--card-bg));border:1px solid color-mix(in srgb,var(--accent-x) 28%,var(--border));border-radius:var(--panel-radius);padding:.75rem .9rem;color:var(--fg);font-size:.88rem;line-height:1.4;box-shadow:var(--shadow)}.hint-explanation strong{display:block;margin-bottom:.35rem;font-size:.92rem}.hint-explanation ul{margin:0;padding-left:1.1rem}.hint-explanation li+li{margin-top:.2rem}.uttt-cell.focused{outline:2px solid var(--accent-x);outline-offset:-1px;box-shadow:0 0 0 1px var(--cell-bg),0 0 10px var(--accent-x);animation:cell-focus 1.5s ease-in-out infinite}@keyframes cell-focus{0%,to{box-shadow:0 0 0 1px var(--cell-bg),0 0 6px var(--accent-x)}50%{box-shadow:0 0 0 1px var(--cell-bg),0 0 14px var(--accent-x)}}.uttt-board:focus{outline:none}.uttt-board:focus-visible{outline:2px dashed var(--border);outline-offset:4px}.lb-clickable .uttt-cell:not(:disabled):active{transform:scale(.92);background:var(--cell-bg-pressed)}@media (hover: hover){.lb-clickable .uttt-cell:not(:disabled):hover{background:var(--cell-hover);border-color:var(--lb-border-active);transform:translateY(-1px);box-shadow:0 4px 10px #0000001a}.lb-clickable.ghost-x .uttt-cell:not(:disabled):empty:hover:after{content:"";position:absolute;width:60%;height:60%;border-radius:2px;background:var(--accent-x);opacity:.15;clip-path:polygon(20% 0%,50% 30%,80% 0%,100% 20%,70% 50%,100% 80%,80% 100%,50% 70%,20% 100%,0% 80%,30% 50%,0% 20%)}.lb-clickable.ghost-o .uttt-cell:not(:disabled):empty:hover:after{content:"";position:absolute;width:50%;height:50%;border-radius:50%;border:3.5px solid var(--accent-o);opacity:.18}}.uttt-controls{display:flex;flex-direction:column;gap:.75rem;width:100%;max-width:520px}.mode-toggle,.difficulty-toggle{display:flex;gap:.25rem;background:var(--card-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border);border-radius:var(--panel-radius);padding:.35rem;box-shadow:var(--shadow)}.mode-btn{flex:1;background:transparent;border:none;padding:.6rem .4rem;font-size:.9rem;font-weight:600;color:var(--muted);border-radius:6px;cursor:pointer;min-height:44px;display:flex;align-items:center;justify-content:center;gap:.35rem;transition:background-color .2s cubic-bezier(.4,0,.2,1),color .2s cubic-bezier(.4,0,.2,1),transform .1s ease,box-shadow .2s ease}.mode-btn.active{background:linear-gradient(135deg,var(--accent-x) 0%,#7c3aed 100%);color:#fff;box-shadow:0 4px 12px #7c3aed40}.difficulty-toggle .mode-btn.active{background:var(--fg);color:var(--bg);box-shadow:0 4px 10px #00000026}.mode-btn:hover:not(.active){background:#94a3b81a;color:var(--fg)}.difficulty-toggle .mode-btn{font-size:.8rem;padding:.5rem .25rem}.action-row{display:flex;gap:.75rem}.reset-btn{flex:1;background:var(--card-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border);border-radius:var(--panel-radius);padding:.75rem 1.25rem;font-size:.95rem;font-weight:600;color:var(--fg);cursor:pointer;min-height:48px;display:flex;align-items:center;justify-content:center;gap:.5rem;box-shadow:var(--shadow);transition:background-color .2s ease,transform .1s ease,border-color .2s ease,box-shadow .2s ease}.reset-btn svg{width:18px;height:18px;stroke:currentColor;stroke-width:2.25;transition:transform .45s ease}.reset-btn:hover:not(:disabled){background:var(--cell-hover);transform:translateY(-1px);box-shadow:0 6px 15px #0000001a}.reset-btn:hover:not(:disabled) svg{transform:rotate(-15deg)}.reset-btn:active:not(:disabled){transform:scale(.97);background:var(--cell-bg-pressed)}.reset-btn:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}.legend{width:100%;max-width:520px;background:var(--card-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border);border-radius:var(--panel-radius);padding:.75rem 1rem;font-size:.88rem;color:var(--muted);box-shadow:var(--shadow);transition:max-height .45s ease}.legend summary{cursor:pointer;font-weight:600;color:var(--fg);padding:.25rem 0;outline:none;display:flex;align-items:center;gap:.5rem}.legend summary::-webkit-details-marker{display:none}.legend summary:before{content:"✦";color:var(--accent-x);font-size:1.1em}.legend[open] summary:before{content:"▼";font-size:.8em}.legend dl{margin:.75rem 0 .25rem;display:grid;gap:.55rem}.legend dl>div{display:grid;grid-template-columns:6.5rem minmax(0,1fr);gap:.75rem;line-height:1.45}.legend dt{color:var(--fg);font-weight:700}.legend dd{margin:0}.legend code{background:var(--border);color:var(--fg);padding:.1rem .35rem;border-radius:4px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85em}.online-lobby,.online-overlay{display:flex;flex-direction:column;align-items:center;gap:.75rem;width:100%;max-width:520px}.online-conn-status{margin:0;font-size:.95rem;font-weight:600;display:flex;align-items:center;gap:.5rem;color:var(--muted);min-height:1.5em}.online-conn-status:before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:#ef4444}.online-conn-status.connecting:before{background:#f59e0b;animation:pulse-dot 1.5s infinite alternate}.online-conn-status.connected:before{background:#22c55e}@keyframes pulse-dot{0%{opacity:.3}to{opacity:1}}.online-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;width:100%}.online-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border);background:var(--card-bg);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);color:var(--fg);padding:.8rem 1.25rem;border-radius:var(--panel-radius);font-size:1rem;font-weight:600;cursor:pointer;min-height:50px;display:flex;align-items:center;justify-content:center;gap:.5rem;box-shadow:var(--shadow);transition:background-color .2s ease,transform .1s ease,border-color .2s ease,box-shadow .2s ease}.online-btn:hover:not(:disabled){background:var(--cell-hover);transform:translateY(-1px);box-shadow:0 6px 15px #0000001a}.online-btn:active:not(:disabled){transform:scale(.97);background:var(--cell-bg-pressed)}.online-btn:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}.online-btn-primary{background:linear-gradient(135deg,var(--accent-x) 0%,#7c3aed 100%);border-color:transparent;color:#fff;box-shadow:0 4px 12px #7c3aed40}.online-btn-primary:hover:not(:disabled){background:linear-gradient(135deg,var(--accent-x) 0%,#6d28d9 100%);box-shadow:0 6px 15px #7c3aed4d}.online-btn-hint{font-size:.72rem;font-weight:700;letter-spacing:.02em;padding:.12rem .45rem;border-radius:999px;background:#ffffff38;border:1px solid rgba(255,255,255,.25);white-space:nowrap}.online-btn:not(.online-btn-primary) .online-btn-hint{background:color-mix(in srgb,var(--fg) 10%,transparent);border-color:var(--border);opacity:.8}.online-back-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:transparent;color:var(--muted);cursor:pointer;font-size:.95rem;font-weight:600;padding:.5rem 1rem;border-radius:var(--radius);transition:color .3s,background-color .3s}.online-back-btn:hover{color:var(--fg);background:#94a3b81a}.online-waiting-text{margin:0;font-size:1rem;font-weight:700;color:var(--fg);animation:pulse-text 2.25s infinite alternate}@keyframes pulse-text{0%{opacity:.6}to{opacity:1}}.online-link-box{display:flex;flex-direction:column;align-items:stretch;gap:.75rem;width:100%;background:var(--card-bg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border);border-radius:var(--panel-radius);padding:1rem;box-shadow:var(--shadow)}.online-role-note{margin:0;width:100%;color:var(--muted);font-size:.95rem;font-weight:600;text-align:center}.online-opponent-disconnected{margin:0;width:100%;color:#f59e0b;font-size:.85rem;font-weight:600;text-align:center}.online-room-link{word-break:break-all;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9rem;color:var(--fg);background:#00000040;padding:.75rem;border-radius:8px;-webkit-user-select:all;user-select:all;border:1px solid var(--border)}.online-role-badge{display:inline-flex;align-items:center;margin-left:.5rem;padding:.2rem .6rem;border-radius:999px;font-size:.75rem;font-weight:700;background:var(--card-bg);border:1px solid var(--border);color:var(--fg);vertical-align:middle}.online-overlay{text-align:center}.online-overlay-msg{margin:0 0 1.25rem;font-size:1.1rem;font-weight:600;color:var(--fg);line-height:1.5}@media (max-width: 480px){.title{font-size:1.8rem}.app{padding:1rem .5rem}.uttt-board{padding:8px}.lb{padding:4px}.legend{font-size:.8rem}.reset-btn{font-size:.9rem}.online-actions{grid-template-columns:1fr}:root{--gap-outer: 6px;--gap-inner: 3px}}@media (max-width: 360px){.title{font-size:1.5rem}.status{font-size:.9rem}.moves-counter{font-size:.75rem}.mode-btn{font-size:.8rem;min-height:40px}.reset-btn{font-size:.8rem;min-height:44px}.legend dl>div{grid-template-columns:1fr;gap:.1rem}}.help-btn{font-size:1rem;font-weight:700;transition:background-color .2s ease,color .2s ease,transform .2s ease,border-color .2s ease,box-shadow .2s ease}.help-btn:hover{color:var(--fg);border-color:var(--fg);transform:translateY(-1px);box-shadow:0 6px 15px #0000001a}.help-btn:active{transform:scale(.94)}.tutorial-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem;animation:tutorial-fade-in .2s ease-out}@keyframes tutorial-fade-in{0%{opacity:0}to{opacity:1}}.tutorial-card{background:var(--card-bg);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid var(--border);border-radius:18px;padding:1.5rem 1.25rem 1.25rem;max-width:360px;width:100%;box-shadow:0 24px 48px -16px #00000073;animation:tutorial-rise .3s cubic-bezier(.16,1,.3,1)}@keyframes tutorial-rise{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.tutorial-progress{display:flex;gap:.4rem;justify-content:center;margin-bottom:1rem}.tutorial-dot{width:8px;height:8px;border-radius:50%;background:var(--border);transition:background .2s,transform .2s}.tutorial-dot.active{background:var(--accent-x);transform:scale(1.3)}.tutorial-dot.done{background:var(--accent-x);opacity:.5}.tutorial-title{margin:0 0 .5rem;font-size:1.05rem;font-weight:700;text-align:center}.tutorial-body{margin:0 0 1rem;font-size:.9rem;line-height:1.5;color:var(--fg);text-align:center}.tutorial-visual{display:flex;justify-content:center;margin:0 0 1rem;color:var(--accent-x);min-height:80px;align-items:center}.tutorial-svg{max-width:100%;max-height:80px}.tutorial-actions{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.tutorial-nav{display:flex;gap:.4rem}.tutorial-btn{border:1px solid var(--border);background:var(--card-bg);color:var(--fg);border-radius:999px;padding:.45rem .9rem;font-size:.85rem;font-weight:500;cursor:pointer;transition:background .2s,color .2s,border-color .2s,opacity .2s}.tutorial-btn:hover{background:var(--lb-bg-done)}.tutorial-btn:disabled{opacity:.4;cursor:default}.tutorial-btn-next{background:var(--accent-x);color:#fff;border-color:var(--accent-x)}.tutorial-btn-next:hover{background:var(--accent-x);opacity:.9}.chat-panel{margin-top:.75rem;background:var(--card-bg, rgba(255,255,255,.04));border:1px solid var(--border);border-radius:12px;padding:.5rem .75rem;font-size:.85rem}.chat-header{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.4rem}.chat-title{margin:0;font-size:.95rem;font-weight:700}.chat-toggle{border:1px solid var(--border);background:transparent;color:var(--fg);border-radius:999px;padding:.2rem .7rem;font-size:.75rem;font-weight:500;cursor:pointer}.chat-toggle:hover{background:var(--lb-bg-done, rgba(255,255,255,.06))}.chat-log{max-height:200px;overflow-y:auto;padding:.25rem 0;display:flex;flex-direction:column;gap:.2rem}.chat-empty{color:var(--text-muted, #888);font-size:.8rem;font-style:italic;margin:.25rem 0}.chat-line{display:flex;gap:.4rem;align-items:baseline}.chat-line-system{font-style:italic;opacity:.85}.chat-meta{display:flex;gap:.3rem;flex-shrink:0}.chat-time{color:var(--text-muted, #888);font-size:.7rem;min-width:2.4em}.chat-sender{font-weight:600;font-size:.78rem}.chat-text{word-break:break-word}.chat-error{margin:.4rem 0 0;padding:.3rem .5rem;background:#dc505026;color:#dc5050;border-radius:6px;font-size:.8rem}.chat-input-row{display:flex;gap:.4rem;margin-top:.4rem}.chat-input{flex:1 1 auto}.chat-send{border:none;background:var(--accent-x, #2563eb);color:#fff;border-radius:999px;padding:.4rem .9rem;font-size:.8rem;font-weight:600;cursor:pointer}.chat-send:disabled{opacity:.4;cursor:default}
