.react-grid-layout{position:relative;transition:height .2s ease}.react-grid-item{transition:all .2s ease;transition-property:left,top,width,height}.react-grid-item img{pointer-events:none;-webkit-user-select:none;user-select:none}.react-grid-item.cssTransforms{transition-property:transform,width,height}.react-grid-item.resizing{transition:none;z-index:1;will-change:width,height}.react-grid-item.react-draggable-dragging{transition:none;z-index:3;will-change:transform}.react-grid-item.dropping{visibility:hidden}.react-grid-item.react-grid-placeholder{background:red;opacity:.2;transition-duration:.1s;z-index:2;-webkit-user-select:none;-o-user-select:none;user-select:none}.react-grid-item.react-grid-placeholder.placeholder-resizing{transition:none}.react-grid-item>.react-resizable-handle{position:absolute;width:20px;height:20px}.react-grid-item>.react-resizable-handle:after{content:"";position:absolute;right:3px;bottom:3px;width:5px;height:5px;border-right:2px solid rgba(0,0,0,.4);border-bottom:2px solid rgba(0,0,0,.4)}.react-resizable-hide>.react-resizable-handle{display:none}.react-grid-item>.react-resizable-handle.react-resizable-handle-sw{bottom:0;left:0;cursor:sw-resize;transform:rotate(90deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-se{bottom:0;right:0;cursor:se-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-nw{top:0;left:0;cursor:nw-resize;transform:rotate(180deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-ne{top:0;right:0;cursor:ne-resize;transform:rotate(270deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-w,.react-grid-item>.react-resizable-handle.react-resizable-handle-e{top:50%;margin-top:-10px;cursor:ew-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-n,.react-grid-item>.react-resizable-handle.react-resizable-handle-s{left:50%;margin-left:-10px;cursor:ns-resize}.react-grid-item>.react-resizable-handle.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}.react-resizable{position:relative}.react-resizable-handle{position:absolute;width:20px;height:20px;background-repeat:no-repeat;background-origin:content-box;box-sizing:border-box;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2IDYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iNnB4Ij48ZyBvcGFjaXR5PSIwLjMwMiI+PHBhdGggZD0iTSA2IDYgTCAwIDYgTCAwIDQuMiBMIDQgNC4yIEwgNC4yIDQuMiBMIDQuMiAwIEwgNiAwIEwgNiA2IEwgNiA2IFoiIGZpbGw9IiMwMDAwMDAiLz48L2c+PC9zdmc+);background-position:bottom right;padding:0 3px 3px 0}.react-resizable-handle-sw{bottom:0;left:0;cursor:sw-resize;transform:rotate(90deg)}.react-resizable-handle-se{bottom:0;right:0;cursor:se-resize}.react-resizable-handle-nw{top:0;left:0;cursor:nw-resize;transform:rotate(180deg)}.react-resizable-handle-ne{top:0;right:0;cursor:ne-resize;transform:rotate(270deg)}.react-resizable-handle-w,.react-resizable-handle-e{top:50%;margin-top:-10px;cursor:ew-resize}.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-resizable-handle-n,.react-resizable-handle-s{left:50%;margin-left:-10px;cursor:ns-resize}.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--background: 210 40% 98%;--foreground: 222.2 47.4% 11.2%;--card: 0 0% 100%;--card-foreground: 222.2 47.4% 11.2%;--popover: 0 0% 100%;--popover-foreground: 222.2 47.4% 11.2%;--primary: 221.2 83.2% 53.3%;--primary-foreground: 210 40% 98%;--secondary: 210 40% 96.1%;--secondary-foreground: 222.2 47.4% 11.2%;--muted: 210 40% 96.1%;--muted-foreground: 215.4 16.3% 46.9%;--accent: 210 40% 96.1%;--accent-foreground: 222.2 47.4% 11.2%;--destructive: 0 84.2% 60.2%;--destructive-foreground: 210 40% 98%;--border: 214.3 31.8% 91.4%;--input: 214.3 31.8% 91.4%;--ring: 221.2 83.2% 53.3%;--radius: .625rem;--page-background: radial-gradient(circle at top left, #eff6ff 0%, #e2e8f0 50%, #f8fafc 100%);--text-main: #0f172a;--text-muted: #475569;--surface-panel: rgba(255, 255, 255, .82);--surface-panel-border: #d9e2ef;--surface-modal: rgba(255, 255, 255, .98);--surface-modal-border: #dbe4ef;--surface-popover: rgba(255, 255, 255, .98);--surface-popover-border: #dbe4ef;--surface-popover-shadow: 0 14px 46px rgba(15, 23, 42, .2);--overlay-backdrop: rgba(15, 23, 42, .55);--canvas-empty-border: #cbd5e1;--canvas-empty-text: #64748b;--split-canvas-bg: #f8fafc;--split-canvas-border: #cbd5e1;--split-pane-border: #dbe4ef;--split-pane-bg: #ffffff;--video-card-bg: #ffffff;--video-card-border: #cbd5e1;--video-card-shadow: 0 8px 24px rgba(15, 23, 42, .15);--library-empty-bg: rgba(255, 255, 255, .55);--library-empty-border: #c6d4e6;--library-empty-text: #64748b;--library-card-border: #c9d9ec;--library-card-bg: linear-gradient(180deg, rgba(255, 255, 255, .98) 0%, rgba(248, 251, 255, .98) 100%);--library-card-border-hover: #9eb7d8;--library-card-shadow-hover: 0 12px 24px rgba(30, 64, 106, .12);--library-title: #1e293b;--library-subtitle: #5f7690;--library-tail: #64748b}.dark{--background: 222.2 84% 4.9%;--foreground: 210 40% 98%;--card: 222.2 84% 4.9%;--card-foreground: 210 40% 98%;--popover: 222.2 84% 4.9%;--popover-foreground: 210 40% 98%;--primary: 217.2 91.2% 59.8%;--primary-foreground: 222.2 47.4% 11.2%;--secondary: 217.2 32.6% 17.5%;--secondary-foreground: 210 40% 98%;--muted: 217.2 32.6% 17.5%;--muted-foreground: 215 20.2% 65.1%;--accent: 217.2 32.6% 17.5%;--accent-foreground: 210 40% 98%;--destructive: 0 62.8% 30.6%;--destructive-foreground: 210 40% 98%;--border: 217.2 32.6% 17.5%;--input: 217.2 32.6% 17.5%;--ring: 224.3 76.3% 48%;--page-background: radial-gradient(1200px 620px at -5% -15%, rgba(30, 64, 175, .26) 0%, rgba(30, 64, 175, 0) 62%), radial-gradient(1000px 560px at 110% 0%, rgba(56, 189, 248, .14) 0%, rgba(56, 189, 248, 0) 64%), linear-gradient(162deg, #020617 0%, #0b1327 45%, #0b1020 100%);--text-main: #e2e8f0;--text-muted: #94a3b8;--surface-panel: rgba(6, 15, 34, .82);--surface-panel-border: rgba(71, 85, 105, .62);--surface-modal: rgba(8, 18, 39, .96);--surface-modal-border: rgba(71, 85, 105, .76);--surface-popover: rgba(8, 18, 39, .97);--surface-popover-border: rgba(71, 85, 105, .76);--surface-popover-shadow: 0 16px 42px rgba(2, 6, 23, .58);--overlay-backdrop: rgba(2, 6, 23, .64);--canvas-empty-border: #334155;--canvas-empty-text: #94a3b8;--split-canvas-bg: #0b1427;--split-canvas-border: #334155;--split-pane-border: #344256;--split-pane-bg: #0f1b31;--video-card-bg: #0d1a31;--video-card-border: #334155;--video-card-shadow: 0 10px 30px rgba(2, 6, 23, .55);--library-empty-bg: rgba(15, 23, 42, .38);--library-empty-border: #334155;--library-empty-text: #93a6bd;--library-card-border: #2f4055;--library-card-bg: linear-gradient(180deg, rgba(15, 23, 42, .92) 0%, rgba(8, 14, 28, .96) 100%);--library-card-border-hover: #46638a;--library-card-shadow-hover: 0 12px 30px rgba(2, 6, 23, .55);--library-title: #e2e8f0;--library-subtitle: #9fb0c4;--library-tail: #8ca0b8;color-scheme:dark}*{border-color:hsl(var(--border))}body{color:hsl(var(--foreground));background:var(--page-background)}.\!container{width:100%!important}.container{width:100%}@media (min-width: 640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media (min-width: 768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media (min-width: 1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media (min-width: 1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media (min-width: 1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.z-50{z-index:50}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.size-4{width:1rem;height:1rem}.size-8{width:2rem;height:2rem}.size-\[22px\]{width:22px;height:22px}.size-\[26px\]{width:26px;height:26px}.h-10{height:2.5rem}.h-5{height:1.25rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-auto{height:auto}.w-9{width:2.25rem}.w-full{width:100%}.shrink-0{flex-shrink:0}.cursor-pointer{cursor:pointer}.resize{resize:both}.items-center{align-items:center}.justify-center{justify-content:center}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.overflow-hidden{overflow:hidden}.whitespace-nowrap{white-space:nowrap}.rounded-full{border-radius:9999px}.rounded-md{border-radius:calc(var(--radius) - 2px)}.border{border-width:1px}.border-2{border-width:2px}.border-input{border-color:hsl(var(--input))}.border-transparent{border-color:transparent}.bg-background{background-color:hsl(var(--background))}.bg-destructive{background-color:hsl(var(--destructive))}.bg-primary{background-color:hsl(var(--primary))}.bg-secondary{background-color:hsl(var(--secondary))}.p-0{padding:0}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-8{padding-left:2rem;padding-right:2rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-slate-300{--tw-text-opacity: 1;color:rgb(203 213 225 / var(--tw-text-opacity, 1))}.underline-offset-4{text-underline-offset:4px}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.ring-0{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(0px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}:root{font-family:Avenir Next,PingFang SC,Microsoft YaHei,sans-serif}*{box-sizing:border-box}body{margin:0;min-height:100vh}#root{min-height:100vh}input:not([data-slot=input]){width:100%;border:1px solid hsl(var(--border));border-radius:10px;padding:10px 12px;font-size:14px;color:var(--text-main);background:hsl(var(--background) / .72)}.error-text{color:hsl(var(--destructive));font-size:13px}.dashboard-page{padding:16px;min-height:100vh;height:auto;display:flex;flex-direction:column;gap:10px;--page-padding-y: 32px;--page-gap-y: 10px;--topbar-height: 56px}.profile-page{min-height:100vh;padding:28px 16px;display:grid;place-items:start center;background:radial-gradient(900px 380px at -10% -20%,#2563eb29,#2563eb00 64%),radial-gradient(800px 340px at 110% 0%,#0ea5e91f,#0ea5e900 62%)}.profile-card{width:min(560px,100%);background:linear-gradient(180deg,hsl(var(--card) / .86),hsl(var(--card) / .7));border:1px solid hsl(var(--border));border-radius:18px;padding:18px;-webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px);box-shadow:0 18px 42px #0f172a24}.profile-header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:14px}.profile-header h2{margin:0;font-size:22px;line-height:1.2;letter-spacing:.01em}.profile-header p{margin:6px 0 0;font-size:13px;color:var(--text-muted)}.profile-form{display:grid;gap:12px}.profile-form-group{display:grid;gap:6px}.profile-form-group label{font-size:13px;color:var(--text-muted);font-weight:500}.profile-form-group input{min-height:44px}.profile-form-group input:focus-visible{outline:2px solid rgba(37,99,235,.28);border-color:#2563ebb8}.profile-avatar-preview{display:flex;align-items:center;gap:12px;padding:12px;border-radius:12px;border:1px solid hsl(var(--border));background:hsl(var(--background) / .6)}.profile-avatar-preview-media{width:48px;height:48px;border-radius:999px;overflow:hidden;background:#9ca3af;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:20px;font-weight:600;flex:0 0 auto}.profile-avatar-preview-media img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;display:block}.profile-avatar-preview-text{min-width:0}.profile-avatar-preview-name{font-size:14px;color:var(--text-main);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.profile-avatar-preview-sub{margin-top:2px;font-size:12px;color:var(--text-muted)}.profile-actions{margin-top:8px;display:flex;justify-content:flex-end}@media (max-width: 640px){.profile-page{padding:16px}.profile-card{border-radius:14px;padding:14px}.profile-header{flex-direction:column;align-items:stretch}.profile-header button{width:100%}}.top-bar{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:nowrap}.top-bar h2{margin:0;font-size:clamp(26px,3.4vw,34px);line-height:1.05;letter-spacing:.01em;white-space:nowrap}.top-bar p{margin:4px 0 0;color:var(--text-muted)}.auth-actions{position:relative;display:flex;align-items:center;gap:10px;flex-wrap:nowrap;justify-content:flex-end;min-width:0;margin-left:auto}.mode-toggle{border-radius:10px;padding:2px;background:hsl(var(--card) / .72);border:1px solid hsl(var(--border));-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.theme-switch-row{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:999px;border:1px solid hsl(var(--border));background:hsl(var(--card) / .7);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.theme-switch-icon{width:14px;height:14px;color:hsl(var(--muted-foreground))}.auth-guest-row{display:inline-flex;align-items:center;gap:8px}.user-menu{position:relative}.user-menu-trigger{display:inline-flex;align-items:center;gap:8px}.user-menu-avatar{width:24px;height:24px;border-radius:999px;overflow:hidden;background:#d4d4d8;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}.user-menu-avatar img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;display:block}.user-menu-avatar-fallback{color:#fff;font-size:12px;line-height:1;font-weight:600}.dark .user-menu-avatar{background:#6b7280}.user-menu-name{max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-menu-caret{opacity:.85;font-size:12px;transform:translateY(1px)}.user-menu-popover{position:absolute;right:0;top:calc(100% + 8px);min-width:180px;background:var(--surface-popover);border:1px solid var(--surface-popover-border);border-radius:12px;box-shadow:var(--surface-popover-shadow);padding:6px;display:grid;gap:4px;z-index:90}.user-menu-item{width:100%;justify-content:flex-start;text-align:left;color:var(--text-main)}.user-menu-item.danger{color:#b91c1c}.user-menu-item.danger:hover{background:#b91c1c14}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay-backdrop);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:grid;place-items:center;padding:18px;z-index:80}.modal{width:min(420px,calc(100vw - 36px));background:var(--surface-modal);border:1px solid var(--surface-modal-border);border-radius:14px;box-shadow:0 18px 60px #0f172a42;overflow:hidden}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 12px 10px;border-bottom:1px solid hsl(var(--border) / .8)}.modal-title{font-size:14px;color:var(--text-main);font-weight:600}.modal-close{color:var(--text-muted)}.modal-close svg{width:16px;height:16px}.modal-body{padding:12px;display:grid;gap:8px}.modal-body label{font-size:13px;color:var(--text-muted)}.modal-body button[type=submit]{margin-top:4px}.modal-confirm-text{font-size:14px;color:var(--text-muted)}.modal-confirm-title{font-size:13px;color:var(--text-main);background:hsl(var(--muted) / .44);border:1px solid hsl(var(--border));border-radius:10px;padding:8px 10px;line-height:1.4;max-height:72px;overflow:auto}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:2px}.workspace{display:grid;grid-template-columns:minmax(0,1fr) clamp(300px,28vw,360px);gap:12px;align-items:stretch;flex:1 1 auto;min-height:0}.workspace.workspace-library-hidden{grid-template-columns:1fr}.canvas-pane,.side-pane{background:var(--surface-panel);border:1px solid var(--surface-panel-border);border-radius:12px;padding:10px;display:flex;flex-direction:column;min-height:0;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.side-pane{height:min(780px,calc(100vh - var(--page-padding-y) - var(--page-gap-y) - var(--topbar-height)));max-height:min(780px,calc(100vh - var(--page-padding-y) - var(--page-gap-y) - var(--topbar-height)))}.canvas-pane-header{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:10px}.canvas-pane-actions{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap}.save-status-text{font-size:13px;line-height:1;white-space:nowrap;padding:0 2px}.save-status-text-saving{color:#1d4ed8}.save-status-text-saved{color:#166534}.save-status-text-error{color:#b91c1c}.dark .save-status-text{color:#cbd5e1}.dark .save-status-text-saving{color:#bfdbfe}.dark .save-status-text-saved{color:#bbf7d0}.dark .save-status-text-error{color:#fecaca}.canvas-pane h3,.side-pane h3{margin:0;font-size:15px}.canvas-wrap{position:relative;flex:1 1 auto;min-height:0}.canvas-empty{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;border:1px dashed var(--canvas-empty-border);border-radius:10px;color:var(--canvas-empty-text);font-size:13px;pointer-events:none}.canvas-loading{position:absolute;top:0;right:0;bottom:0;left:0;z-index:12;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;border-radius:10px;background:#f8fafcdb;color:#334155;font-size:13px;letter-spacing:.01em}.canvas-loading-spinner{width:26px;height:26px;border-radius:999px;border:3px solid rgba(148,163,184,.35);border-top-color:#2563eb;animation:canvas-loading-spin .9s linear infinite}@keyframes canvas-loading-spin{to{transform:rotate(360deg)}}.dark .canvas-loading{background:#0206179e;color:#cbd5e1}.dark .canvas-loading-spinner{border-color:#64748b59;border-top-color:#93c5fd}.layout{min-height:100%}.split-canvas{display:flex;flex-direction:column;min-height:100%;height:100%;max-height:none;border:1px dashed var(--split-canvas-border);border-radius:10px;overflow:visible;background:var(--split-canvas-bg)}.split-canvas>*{flex:1 1 0;min-height:0;min-width:0}.split-branch{width:100%;height:100%;display:flex;min-height:0;min-width:0}.split-row{flex-direction:row}.split-col{flex-direction:column}.split-pane{min-width:0;min-height:0;overflow:hidden;display:flex;flex-direction:column;position:relative;z-index:0}.split-pane>*{flex:1 1 0;min-height:0;min-width:0}.split-divider{background:#cbd5e1;flex:0 0 auto;flex-shrink:0;position:relative;z-index:10;touch-action:none}.split-divider:before{content:"";position:absolute;z-index:2;pointer-events:auto}.split-divider.vertical{width:5px;cursor:col-resize}.split-divider.vertical:before{top:0;bottom:0;left:-12px;right:-12px;cursor:col-resize}.split-divider.horizontal{height:5px;cursor:row-resize}.split-divider.horizontal:before{left:0;right:0;top:-12px;bottom:-12px;cursor:row-resize}.split-leaf{width:100%;height:100%;position:relative;isolation:isolate;border:1px solid var(--split-pane-border);background:var(--split-pane-bg)}.split-leaf-empty{width:100%;height:100%;display:grid;place-items:center;color:var(--canvas-empty-text);font-size:13px}.split-leaf-tools{position:absolute;top:50%;right:6px;transform:translateY(-50%);display:flex;flex-direction:column;flex-wrap:nowrap;justify-content:center;align-items:flex-end;gap:6px;max-width:min(220px,calc(100% - 12px));z-index:30;pointer-events:auto}.split-widget-card{width:100%;height:100%;display:flex;flex-direction:column;position:relative}.split-widget-header{position:absolute;top:0;left:0;right:0;height:32px;z-index:20;display:flex;align-items:center;justify-content:space-between;padding:0 8px;font-size:12px;color:#e2e8f0;border-bottom:1px solid rgba(226,232,240,.35);background:linear-gradient(to bottom,#0f172ae0,#0f172a8c);opacity:0;pointer-events:none;transition:opacity .16s ease}.split-widget-header span{flex:1 1 0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-right:8px}.split-widget-card:hover .split-widget-header{opacity:1;pointer-events:auto}@media (hover: none){.split-widget-header{opacity:1;pointer-events:auto}}.split-widget-header button{line-height:1}.video-embed-wrap{position:relative;width:100%;flex:1;min-height:0}.video-embed-wrap iframe{border:0;width:100%;height:100%;min-height:0;display:block}.video-embed-loading{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;background:#0f172a8f;color:#e2e8f0;font-size:12px;pointer-events:none}.video-embed-spinner{width:20px;height:20px;border-radius:999px;border:2px solid rgba(226,232,240,.35);border-top-color:#f8fafc;animation:video-embed-spin .9s linear infinite}@keyframes video-embed-spin{to{transform:rotate(360deg)}}.dark .video-embed-loading{background:#020617a3;color:#cbd5e1}.side-input-row{display:grid;grid-template-columns:1fr auto;align-items:center;gap:8px;margin-bottom:10px}.side-pane-header{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.side-pane-header h3{margin:0}.library-list{display:grid;gap:10px;flex:1 1 auto;min-height:0;max-height:none;overflow:auto;padding-right:2px;align-content:start}.library-empty{border:1px dashed var(--library-empty-border);border-radius:12px;padding:20px;text-align:center;color:var(--library-empty-text);font-size:13px;background:var(--library-empty-bg)}.library-item{border:1px solid var(--library-card-border);border-radius:12px;padding:0;background:var(--library-card-bg);display:grid;grid-template-columns:136px minmax(0,1fr);align-items:stretch;gap:0;overflow:hidden;cursor:grab;min-height:104px;height:104px;transition:border-color .16s ease,box-shadow .16s ease,transform .16s ease;min-width:0}.library-item:hover{border-color:var(--library-card-border-hover);box-shadow:var(--library-card-shadow-hover);transform:translateY(-1px)}.library-item:active{cursor:grabbing;transform:translateY(0)}.library-item-thumb-wrap{position:relative;min-height:100%;border-right:1px solid rgba(201,217,236,.72)}.library-item-thumb{width:100%;height:100%;background:#0f172a}.library-item-thumb img{width:100%;height:100%;-o-object-fit:contain;object-fit:contain;display:block;background:#0f172a}.library-thumb-placeholder{width:100%;height:100%;min-height:100%;background:linear-gradient(110deg,#dbe7f3,#f5f9ff,#dbe7f3 90%);background-size:200% 100%;animation:library-thumb-shimmer 1.2s ease-in-out infinite}@keyframes library-thumb-shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.library-item-toolbar{position:absolute;top:8px;left:8px;right:8px;display:flex;align-items:center;justify-content:space-between;gap:8px;pointer-events:none}.library-item-drag-tip{display:inline-flex;align-items:center;height:22px;padding:0 9px;border-radius:999px;font-size:11px;letter-spacing:.02em;color:#e2e8f0;background:#0f172a8c;border:1px solid rgba(148,163,184,.4);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.library-item-main{padding:10px 11px 12px;min-width:0;display:flex;flex-direction:column;justify-content:center;gap:6px;min-height:0}.library-item-main>*{min-width:0}.library-item-title{font-size:13px;line-height:1.35;color:var(--library-title);overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.library-item-up{font-size:12px;color:var(--library-subtitle);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.library-item-remove{pointer-events:auto;width:24px;height:24px;min-height:24px;border:1px solid rgba(203,213,225,.8);border-radius:999px;padding:0;line-height:1;font-size:16px;background:#f8fafce6;color:#475569;cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.library-item-remove:hover{background:#f1f5f9fa;color:#0f172a}.dark .library-item-thumb{background:#1f2d44}.dark .library-item-thumb-wrap{border-right-color:#475569bf}.dark .library-thumb-placeholder{background:linear-gradient(110deg,#1f2d44,#2b3b56,#1f2d44 90%)}.dark .library-item-drag-tip{color:#dbeafe;background:#0f172aa8;border-color:#64748b80}.dark .library-item-remove{border-color:#475569cc;background:#0f172abd;color:#cbd5e1}.dark .library-item-remove:hover{background:#1e293bf0;color:#f8fafc}.library-list-tail{padding:8px 2px 2px;text-align:center;color:var(--library-tail);font-size:12px}.video-card{border-radius:14px;border:1px solid var(--video-card-border);background:var(--video-card-bg);overflow:hidden;box-shadow:var(--video-card-shadow);display:flex;flex-direction:column;position:relative}.video-card-header{position:absolute;top:0;left:0;right:0;height:36px;padding:0 8px 0 10px;display:flex;justify-content:space-between;align-items:center;z-index:2;border-bottom:1px solid rgba(226,232,240,.35);background:linear-gradient(to bottom,#0f172aeb,#0f172a8c);cursor:move;-webkit-user-select:none;-moz-user-select:none;user-select:none;opacity:0;pointer-events:none;transition:opacity .16s ease}.video-card:hover .video-card-header{opacity:1;pointer-events:auto}@media (hover: none){.video-card-header{opacity:1;pointer-events:auto}}.video-card-title{font-size:13px;color:#f1f5f9;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;margin-right:6px}.video-card-header button{line-height:1}.video-card .video-embed-wrap{flex:1}.video-card .react-resizable-handle{z-index:4}.hint-row{min-height:20px;display:flex;justify-content:space-between;gap:10px;color:#334155;margin-top:10px;font-size:13px}.hint-row>span:first-child{min-width:0}.history-popover{position:fixed;left:16px;right:16px;bottom:56px;max-width:720px;margin:0 auto;background:#fffffff5;border:1px solid #dbe4ef;border-radius:12px;box-shadow:0 16px 48px #0f172a2e;padding:10px;z-index:60}.history-title{font-size:13px;color:#0f172a;margin-bottom:8px}.history-list{max-height:260px;overflow:auto;display:grid;gap:6px}.history-item{width:100%;border:0;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 10px;border-radius:10px;background:#0f172a0f;color:#0f172a}.history-item:hover{background:#0f172a17}.history-item-label{flex:1 1 0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}.history-item-time{flex:0 0 auto;font-size:12px;color:#475569}.history-empty{padding:8px 10px;color:#64748b;font-size:13px}@media (max-width: 980px){.dashboard-page{padding:14px}.top-bar{align-items:center;gap:10px}.top-bar h2{font-size:clamp(22px,4.4vw,30px)}.workspace{grid-template-columns:1fr}.canvas-wrap{min-height:360px}.auth-actions{width:auto;justify-content:flex-end}.side-pane{height:auto;max-height:none;min-height:340px}.library-list{max-height:420px}.login-popover{width:100%}}@media (max-width: 760px){.dashboard-page{padding:10px;gap:8px}.top-bar{align-items:flex-start;flex-wrap:wrap;gap:12px}.top-bar h2{font-size:clamp(22px,7.8vw,28px)}.auth-actions{gap:8px;width:100%;justify-content:flex-start;flex-wrap:wrap;margin-left:0}.mode-toggle{width:100%}.mode-toggle>*{flex:1 1 0}.theme-switch-row,.user-menu,.auth-guest-row{flex:1 1 auto}.user-menu-trigger{width:100%;justify-content:space-between}.canvas-pane,.side-pane{padding:8px;border-radius:10px}.side-input-row{grid-template-columns:1fr}.side-input-row button,.canvas-pane-actions{width:100%}.canvas-pane-actions>button{flex:1 1 0}.library-item{grid-template-columns:1fr;height:auto;min-height:0}.library-item-thumb-wrap{min-height:160px;border-right:0;border-bottom:1px solid rgba(201,217,236,.72)}.library-item-main{padding:10px}}.placeholder\:text-muted-foreground::-moz-placeholder{color:hsl(var(--muted-foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive) / .9)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary) / .9)}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary) / .8)}.hover\:bg-transparent:hover{background-color:transparent}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-slate-50:hover{--tw-text-opacity: 1;color:rgb(248 250 252 / var(--tw-text-opacity, 1))}.hover\:underline:hover{text-decoration-line:underline}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color: hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color: hsl(var(--background))}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.group.toaster .group-\[\.toaster\]\:border-border{border-color:hsl(var(--border))}.group.toast .group-\[\.toast\]\:bg-muted{background-color:hsl(var(--muted))}.group.toast .group-\[\.toast\]\:bg-primary{background-color:hsl(var(--primary))}.group.toaster .group-\[\.toaster\]\:bg-background{background-color:hsl(var(--background))}.group.toast .group-\[\.toast\]\:text-muted-foreground{color:hsl(var(--muted-foreground))}.group.toast .group-\[\.toast\]\:text-primary-foreground{color:hsl(var(--primary-foreground))}.group.toaster .group-\[\.toaster\]\:text-foreground{color:hsl(var(--foreground))}.group.toaster .group-\[\.toaster\]\:shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.data-\[state\=checked\]\:translate-x-4[data-state=checked]{--tw-translate-x: 1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[state\=on\]\:border-primary[data-state=on]{border-color:hsl(var(--primary))}.data-\[state\=checked\]\:bg-primary[data-state=checked],.data-\[state\=on\]\:bg-primary[data-state=on]{background-color:hsl(var(--primary))}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:hsl(var(--input))}.data-\[state\=on\]\:text-primary-foreground[data-state=on]{color:hsl(var(--primary-foreground))}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:1rem;height:1rem}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}
