:root{--bg-app: #1E1F22;--bg-panel: #2B2D30;--bg-elevated: #2B2D30;--bg-hover: #2E3034;--bg-selected: #2E436E;--border-subtle: #393B40;--border-strong: #4E5157;--text-primary: #DFE1E5;--text-secondary: #BCBEC4;--text-muted: #868A91;--text-disabled: #5A5D63;--accent: #3574F0;--accent-hover: #4F8AF0;--accent-muted: #2E436E;--focus-ring: #3574F0;--success: #499C54;--warn: #E0A800;--error: #DB5C5C;--info: #3574F0;--tag-blue: #3574F0;--tag-green: #499C54;--tag-orange: #CF8E6D;--tag-purple: #B68FF2;--tag-teal: #4DBCE9;--tag-pink: #E26EBC;--tag-yellow: #D6A943;--tag-gray: #6E7178;--font-ui: -apple-system, BlinkMacSystemFont, "Segoe UI", "Inter", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;--fs-sm: 12px;--fs-md: 13px;--fs-lg: 14px;--fs-xl: 16px;--sp-xs: 4px;--sp-sm: 8px;--sp-md: 12px;--sp-lg: 16px;--sp-xl: 24px;--shadow-elevated: 0 8px 24px rgba(0, 0, 0, .45);--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;height:100%}body{background:var(--bg-app);color:var(--text-primary);font-family:var(--font-ui);font-size:var(--fs-md);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow:hidden}.app{display:flex;flex-direction:column;height:100%}.main-row{flex:1;display:flex;min-height:0}.toolbar{display:flex;align-items:center;height:40px;padding:0 var(--sp-md);background:var(--bg-panel);border-bottom:1px solid var(--border-subtle);gap:var(--sp-md)}.toolbar-title{font-weight:500;color:var(--text-primary)}.toolbar-spacer{flex:1}.btn{background:var(--bg-panel);color:var(--text-primary);border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:4px 10px;font:inherit;cursor:pointer;transition:background-color .1s ease,border-color .1s ease}.btn:hover{background:var(--bg-hover)}.btn:focus-visible{outline:2px solid var(--focus-ring);outline-offset:-1px}.btn[disabled]{opacity:.5;cursor:not-allowed}.btn--primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn--primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.toolbar-user{color:var(--text-muted);font-size:var(--fs-sm);padding-right:var(--sp-xs)}.sync-badge{font-size:var(--fs-sm);color:var(--text-muted);padding:2px 8px;border-radius:var(--radius-sm);background:var(--bg-app);border:1px solid var(--border-subtle)}.sync-badge--saving{color:var(--accent)}.sync-badge--error{color:var(--error);border-color:var(--error)}.sync-badge--idle{color:var(--success)}.viewport{flex:1;background:var(--bg-app);position:relative;overflow:hidden;-webkit-user-select:none;user-select:none}.world{position:absolute;top:0;left:0;transform-origin:0 0;will-change:transform}.world-grid{position:absolute;left:-200000px;top:-200000px;width:400000px;height:400000px;background:radial-gradient(circle at 1px 1px,var(--border-subtle) 1px,transparent 0) 0 0 / 24px 24px;pointer-events:none}.item-frame{position:absolute;-webkit-user-select:none;user-select:none;cursor:move}.item-frame>img{width:100%;height:100%;object-fit:cover;display:block;border-radius:var(--radius-sm);pointer-events:none}.link-card{width:100%;height:100%;background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:var(--radius-md);overflow:hidden;display:flex;flex-direction:column;color:var(--text-primary)}.link-thumb{flex:0 0 auto;width:100%;height:50%;min-height:0;background:var(--bg-app);overflow:hidden}.link-thumb img{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}.link-text{flex:1 1 auto;padding:var(--sp-sm) var(--sp-md);display:flex;flex-direction:column;gap:4px;min-height:0;overflow:hidden}.link-site{display:flex;align-items:center;gap:6px;color:var(--text-muted);font-size:11px;text-transform:uppercase;letter-spacing:.5px}.link-favicon{width:14px;height:14px;border-radius:2px;pointer-events:none}.link-site-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.link-title{font-size:var(--fs-md);font-weight:500;line-height:1.3;color:var(--text-primary);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.link-desc{font-size:var(--fs-sm);color:var(--text-secondary);line-height:1.4;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.zone-card{width:100%;height:100%;background:#3574f00a;border:1px dashed var(--border-strong);border-radius:var(--radius-md);display:flex;flex-direction:column;overflow:hidden}.zone-header{flex:0 0 auto;height:6px;background:#3574f059;border-bottom:1px dashed var(--border-subtle);pointer-events:none}.zone-body{flex:1;pointer-events:none}.zone-label{position:absolute;height:26px;padding:0 10px;display:inline-flex;align-items:center;background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);color:var(--text-primary);font-size:14px;font-weight:500;line-height:1;white-space:nowrap;-webkit-user-select:none;user-select:none;pointer-events:auto;z-index:4;box-shadow:0 2px 6px #00000059;cursor:text;overflow:hidden}.zone-label--pinned{border-color:var(--accent-muted)}.zone-label-text{overflow:hidden;text-overflow:ellipsis}.zone-label-text--empty{color:var(--text-muted);font-style:italic;font-weight:400}.zone-label-input{background:transparent;border:none;color:var(--text-primary);font:inherit;font-size:14px;font-weight:500;outline:none;width:100%;min-width:80px}.video-card{width:100%;height:100%;background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:var(--radius-md);overflow:hidden;display:flex;flex-direction:column;color:var(--text-primary)}.video-card--playing{background:#000}.video-card iframe{width:100%;height:100%;border:0;display:block}.video-thumb{flex:1;position:relative;background:#000;overflow:hidden;min-height:0}.video-thumb img{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}.video-play{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:64px;height:64px;border-radius:999px;background:#0000008c;border:2px solid rgba(255,255,255,.85);color:#fffffff2;display:grid;place-items:center;cursor:pointer;padding:0 0 0 4px;transition:background-color .12s ease,transform .12s ease}.video-play:hover{background:#000000bf;transform:translate(-50%,-50%) scale(1.05)}.video-caption{flex:0 0 auto;padding:var(--sp-xs) var(--sp-md);display:flex;flex-direction:column;gap:2px;border-top:1px solid var(--border-subtle)}.video-provider{font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted)}.video-title{font-size:var(--fs-md);font-weight:500;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.3}.video-author{font-size:var(--fs-sm);color:var(--text-muted)}.video-controls{position:absolute;top:6px;right:6px;display:flex;flex-direction:column;gap:4px;z-index:3;opacity:0;transition:opacity .12s ease}.video-card:hover .video-controls,.video-card--interactive .video-controls{opacity:1}.video-ctrl{width:26px;height:26px;display:grid;place-items:center;background:#000000a6;border:1px solid rgba(255,255,255,.25);color:#fff;border-radius:var(--radius-sm);font-size:13px;line-height:1;cursor:pointer;padding:0}.video-ctrl:hover{background:#000000d9;border-color:#ffffff80}.video-hint{position:absolute;left:50%;bottom:8px;transform:translate(-50%);padding:3px 8px;background:#0009;color:#ffffffe6;font-size:11px;border-radius:999px;pointer-events:none;opacity:0;transition:opacity .2s ease}.video-card:hover .video-hint{opacity:1}.video-card--interactive{outline:2px solid var(--accent);outline-offset:-2px;border-radius:var(--radius-md)}.tag-editor{position:absolute;display:flex;flex-wrap:wrap;align-items:center;gap:4px;padding:4px;background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);box-shadow:var(--shadow-elevated);pointer-events:auto;z-index:5;max-width:420px}.tag-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 4px 2px 8px;font-size:11px;line-height:1.4;border-radius:999px;border:1px solid transparent;white-space:nowrap}.tag-chip[data-color=blue]{background:#3574f029;border-color:var(--tag-blue);color:#cfd9ff}.tag-chip[data-color=green]{background:#499c5429;border-color:var(--tag-green);color:#c9eccf}.tag-chip[data-color=orange]{background:#cf8e6d2e;border-color:var(--tag-orange);color:#f3dbcc}.tag-chip[data-color=purple]{background:#b68ff22e;border-color:var(--tag-purple);color:#e8d9ff}.tag-chip[data-color=teal]{background:#4dbce929;border-color:var(--tag-teal);color:#cdebfa}.tag-chip[data-color=pink]{background:#e26ebc2e;border-color:var(--tag-pink);color:#f5d4ea}.tag-chip[data-color=yellow]{background:#d6a9432e;border-color:var(--tag-yellow);color:#f3e3bc}.tag-chip[data-color=gray]{background:#6e717840;border-color:var(--tag-gray);color:var(--text-secondary)}.tag-chip-x{background:transparent;border:none;color:inherit;cursor:pointer;font-size:14px;line-height:1;padding:0 2px;opacity:.6}.tag-chip-x:hover{opacity:1}.tag-chip--ghost{opacity:.7;cursor:pointer;padding:2px 8px}.tag-chip--ghost:hover{opacity:1}.tag-input{flex:1 0 80px;min-width:80px;background:transparent;border:none;color:var(--text-primary);font:inherit;font-size:12px;padding:2px 4px;outline:none}.tag-input::placeholder{color:var(--text-muted)}.tag-suggestions{flex:1 0 100%;display:flex;flex-wrap:wrap;align-items:center;gap:4px;padding-top:4px;border-top:1px solid var(--border-subtle);margin-top:2px}.tag-suggestions--ai{border-top:none;padding-top:0;margin-top:4px}.tag-suggestions-label{font-size:12px;line-height:1;opacity:.85;padding-right:2px}.tag-chip--ai{border-style:dashed;background:transparent;padding:0;display:inline-flex;align-items:stretch;overflow:hidden}.tag-chip-accept{background:transparent;border:none;color:inherit;font:inherit;font-size:11px;cursor:pointer;padding:2px 4px 2px 8px}.tag-chip-accept:hover{background:#ffffff0d}.tag-chip--loading{padding:2px 8px;color:var(--text-muted);font-style:italic;font-size:11px;display:inline-flex;align-items:center;gap:6px;cursor:default}.tag-loading-dots{display:inline-flex;gap:3px;align-items:center}.tag-loading-dots span{width:4px;height:4px;border-radius:50%;background:var(--accent);animation:tag-loading-pulse 1.2s ease-in-out infinite}.tag-loading-dots span:nth-child(2){animation-delay:.15s}.tag-loading-dots span:nth-child(3){animation-delay:.3s}@keyframes tag-loading-pulse{0%,80%,to{opacity:.25;transform:scale(.8)}40%{opacity:1;transform:scale(1.1)}}.tag-clear-all{background:transparent;border:none;color:var(--text-muted);font:inherit;font-size:11px;cursor:pointer;padding:2px 6px;border-radius:var(--radius-sm);margin-left:auto}.tag-clear-all:hover{background:var(--bg-hover);color:var(--text-secondary)}.item-frame--dimmed{opacity:.2;filter:grayscale(.7);transition:opacity .12s ease,filter .12s ease}.sidebar{width:200px;background:var(--bg-panel);border-right:1px solid var(--border-subtle);display:flex;flex-direction:column;overflow:hidden}.sidebar-header{display:flex;align-items:center;padding:var(--sp-sm) var(--sp-md);border-bottom:1px solid var(--border-subtle);color:var(--text-muted);font-size:11px;text-transform:uppercase;letter-spacing:.5px}.sidebar-title{flex:1}.sidebar-clear{background:transparent;border:none;color:var(--accent);font-size:11px;cursor:pointer;padding:0;text-transform:uppercase;letter-spacing:.5px}.sidebar-clear:hover{color:var(--accent-hover)}.sidebar-list{flex:1;overflow-y:auto;padding:var(--sp-xs);display:flex;flex-direction:column;gap:2px}.sidebar-tag{display:flex;align-items:center;gap:8px;padding:4px 8px;background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);color:var(--text-secondary);font:inherit;font-size:var(--fs-sm);cursor:pointer;text-align:left;width:100%}.sidebar-tag:before{content:"";width:8px;height:8px;border-radius:2px;flex:0 0 auto}.sidebar-tag[data-color=blue]:before{background:var(--tag-blue)}.sidebar-tag[data-color=green]:before{background:var(--tag-green)}.sidebar-tag[data-color=orange]:before{background:var(--tag-orange)}.sidebar-tag[data-color=purple]:before{background:var(--tag-purple)}.sidebar-tag[data-color=teal]:before{background:var(--tag-teal)}.sidebar-tag[data-color=pink]:before{background:var(--tag-pink)}.sidebar-tag[data-color=yellow]:before{background:var(--tag-yellow)}.sidebar-tag[data-color=gray]:before{background:var(--tag-gray)}.sidebar-tag:hover{background:var(--bg-hover)}.sidebar-tag--active{background:var(--accent-muted);color:var(--text-primary)}.sidebar-tag-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-tag-count{color:var(--text-muted);font-size:11px;flex:0 0 auto}.selection-box{position:absolute;border:1px solid var(--accent);pointer-events:none}.item-handle{position:absolute;width:10px;height:10px;background:var(--accent);border:1px solid var(--bg-app);border-radius:2px;pointer-events:auto;z-index:2}.item-handle--n{top:-5px;left:50%;transform:translate(-50%)}.item-handle--s{bottom:-5px;left:50%;transform:translate(-50%)}.item-handle--e{right:-5px;top:50%;transform:translateY(-50%)}.item-handle--w{left:-5px;top:50%;transform:translateY(-50%)}.item-handle--nw{left:-5px;top:-5px}.item-handle--ne{right:-5px;top:-5px}.item-handle--sw{left:-5px;bottom:-5px}.item-handle--se{right:-5px;bottom:-5px}.viewport-hint{position:absolute;left:var(--sp-md);bottom:var(--sp-md);padding:4px 8px;background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);color:var(--text-muted);font-size:var(--fs-sm);pointer-events:none}.viewport-hint kbd,.empty-state kbd{background:var(--bg-app);border:1px solid var(--border-strong);border-radius:3px;padding:1px 4px;font-family:var(--font-mono);font-size:11px;color:var(--text-secondary)}.empty-state{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;color:var(--text-muted);font-size:var(--fs-md);pointer-events:none;white-space:nowrap}.auth-shell{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--bg-app);display:grid;place-items:center;padding:var(--sp-lg)}.auth-shell--centered{color:var(--text-muted)}.auth-card{width:min(380px,100%);background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:var(--sp-xl);box-shadow:var(--shadow-elevated)}.auth-title{font-size:var(--fs-xl);font-weight:500;margin-bottom:var(--sp-lg);letter-spacing:.2px}.auth-form{display:flex;flex-direction:column;gap:var(--sp-md)}.auth-label{display:flex;flex-direction:column;gap:var(--sp-xs);color:var(--text-secondary);font-size:var(--fs-sm)}.auth-input{background:var(--bg-app);color:var(--text-primary);border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:8px 10px;font:inherit;font-size:var(--fs-md);outline:none}.auth-input:focus{border-color:var(--accent)}.auth-hint{color:var(--text-muted);font-size:var(--fs-sm)}.auth-banner{padding:8px 10px;border-radius:var(--radius-sm);font-size:var(--fs-sm)}.auth-banner--error{background:#db5c5c1f;border:1px solid var(--error);color:var(--error)}.auth-sent{display:flex;flex-direction:column;gap:var(--sp-md)}.auth-sent-title{font-size:var(--fs-lg);font-weight:500}.auth-sent-body{color:var(--text-secondary);font-size:var(--fs-md)}.auth-resend{align-self:flex-start}.modal-scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:grid;place-items:center;padding:var(--sp-lg);z-index:100}.modal{width:min(420px,100%);background:var(--bg-panel);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);box-shadow:var(--shadow-elevated);display:flex;flex-direction:column}.modal-header{display:flex;align-items:center;padding:var(--sp-md) var(--sp-lg);border-bottom:1px solid var(--border-subtle)}.modal-title{flex:1;font-weight:500}.modal-close{background:transparent;border:none;color:var(--text-muted);font-size:20px;line-height:1;cursor:pointer;padding:0 4px}.modal-close:hover{color:var(--text-primary)}.modal-body{padding:var(--sp-lg)}.modal-actions{display:flex;justify-content:flex-end;gap:var(--sp-sm);margin-top:var(--sp-md)}
