:root{--text: #1d1d1f;--text-secondary: #8e8e93;--text-tertiary: #b3b3b3;--accent: #007aff;--bg-header: #ffffff;--bg-toolbar: #ededed;--bg-board: #f2f2f2;--bg-card: #ffffff;--bg-panel: #efefef;--bg-menu: #ffffff;--bg-hover: #f0f0f0;--bg-hover-strong: #dddddd;--bg-selected: #e8f0fe;--bg-button: #fafafa;--border: #e2e2e2;--border-strong: #d0d0d0;--divider: #c8c8c8;--toolbar-label: #4a4a4a;--bg-chrome: #e6e6e6;--surface-muted: #ededed;--text-ui: #4d4d4d;--warning: #ff8080}:root[data-theme=dark]{--text: #e8e8ed;--text-secondary: #98989e;--text-tertiary: #6e6e73;--accent: #409cff;--bg-header: #2a2a2c;--bg-toolbar: #3a3a3c;--bg-board: #1c1c1e;--bg-card: #2c2c2e;--bg-panel: #333335;--bg-menu: #2c2c2e;--bg-hover: #3a3a3c;--bg-hover-strong: #48484a;--bg-selected: #2c3a52;--bg-button: #3a3a3c;--border: #3a3a3c;--border-strong: #48484a;--divider: #545456;--toolbar-label: #c8c8cc;--bg-chrome: #232326;--surface-muted: #3a3a3c;--text-ui: #e6e6e7;--warning: #ff8080}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,Hiragino Sans,Helvetica Neue,Arial,sans-serif;font-size:14px;color:var(--text);background:var(--bg-board);overscroll-behavior:none}button{font:inherit;border:none;background:none;padding:0;cursor:pointer;color:inherit}select{color:var(--text)}.app{display:flex;flex-direction:column;height:100%;overflow:hidden}.header{display:flex;align-items:center;gap:8px;height:45px;padding:0 16px;background:var(--bg-chrome);flex-shrink:0}.header .icon-button,.sidebar-footer .icon-button{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:6px;color:var(--accent);font-size:16px}.header .icon-button:hover,.sidebar-footer .icon-button:hover{background:var(--bg-hover-strong)}.header .icon-button:disabled{opacity:.35;cursor:default}.sidebar-footer .icon-button{color:var(--text-secondary)}.header-spacer{flex:1;min-width:8px}.zoom-label{width:40px!important;font-size:12px;font-weight:500;font-variant-numeric:tabular-nums;color:var(--toolbar-label)!important;padding:0}.column-width-slider{width:200px;margin-right:10px;accent-color:var(--accent)}.project-name,.project-name-input{font:inherit;font-weight:600;font-size:15px;padding:4px 8px;border:none;border-radius:4px;color:var(--toolbar-label);background:transparent;outline:none}.project-name{max-width:400px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-name:hover{background:var(--bg-hover-strong)}.project-name-input{min-width:200px;max-width:400px}.text-button{font-size:12px;padding:4px 10px;border-radius:6px;border:1px solid var(--border-strong);background:var(--bg-button);color:var(--text)}.text-button:hover{background:var(--bg-hover)}.format-bar{display:flex;align-items:center;gap:10px;height:30px;padding:0 10px;background:var(--bg-toolbar);border-bottom:1px solid var(--border);flex-shrink:0;position:relative}.header,.format-bar{overflow-x:auto;overflow-y:hidden;scrollbar-width:none}.header::-webkit-scrollbar,.format-bar::-webkit-scrollbar{display:none}.header>*,.format-bar>*{flex-shrink:0}.header>.project-name{flex-shrink:1;min-width:72px}.format-bar .divider{width:1px;height:15px;background:var(--divider);margin:0 5px}.format-button{display:flex;align-items:center;justify-content:center;min-width:24px;height:22px;padding:0 4px;border-radius:4px;font-size:13px;color:var(--toolbar-label)}.format-button:hover:not(:disabled){background:var(--bg-hover-strong)}.format-button.active{background:var(--accent);color:#fff}.format-button:disabled{opacity:.35;cursor:default}.format-bar-hide{margin-left:auto}.format-select{font-size:12px;height:22px;border:1px solid var(--border-strong);border-radius:4px;background:var(--bg-card)}.color-panel-wrap{position:relative;display:flex;gap:4px}.color-panel{position:fixed;display:flex;gap:6px;padding:8px;background:var(--bg-panel);border-radius:12px;box-shadow:0 2px 6px #0000002e;z-index:60}.color-swatch{width:22px;height:22px;border-radius:50%;border:1px solid rgba(0,0,0,.1)}.color-swatch.selected{border:2px solid var(--accent)}.spacing-menu-wrap{position:relative;display:flex}.spacing-menu{position:fixed;z-index:60;min-width:96px;padding:4px;background:var(--bg-menu);border-radius:8px;box-shadow:0 2px 8px #00000038;display:flex;flex-direction:column}.spacing-menu-item{display:flex;align-items:center;gap:4px;padding:3px 8px 3px 4px;border-radius:4px;font-size:12px;color:var(--text);text-align:left}.spacing-menu-item:hover{background:var(--accent);color:#fff}.spacing-check{display:inline-flex;width:14px;justify-content:center}.board-viewport{flex:1;min-width:0;min-height:0;overflow:auto;-webkit-overflow-scrolling:touch;background:var(--bg-board);position:relative}.board-scale{transform-origin:0 0}.board-content{position:relative}.columns-row{display:flex;align-items:flex-start;gap:5px}.folio-column{position:relative;display:flex;flex-direction:column;gap:15px;padding:15px;flex-shrink:0;transition:opacity .2s ease-in-out}.folio-column.focus-dimmed{opacity:0;pointer-events:none}.focus-animating .path-overlay{opacity:0}.add-row-button{transition:opacity .15s ease-in-out}.focus-animating .add-row-button{opacity:0}.memo-lane{position:relative;flex-shrink:0;align-self:stretch}.memo-lane .folio-column{position:absolute;top:0;left:0}.add-row-button{margin-left:35px;width:30px;height:24px;color:var(--text-secondary);font-size:20px;line-height:1}.add-row-button:hover{color:var(--text)}.folio{position:relative;display:flex;align-items:flex-start}.folio-side{position:relative;width:30px;flex-shrink:0;align-self:stretch}.side-toggle{position:absolute;top:15px;left:5px;color:var(--accent);display:flex;align-items:center;justify-content:center;width:20px;height:20px;transition:transform .15s ease-in-out}.side-toggle svg,.row-menu-toggle svg{display:block}.side-toggle.expanded{transform:rotate(90deg)}.row-menu-toggle{position:absolute;top:43px;left:5px;color:var(--text-secondary);display:flex;align-items:center;justify-content:center;width:20px;height:20px}.folio-card{position:relative;display:flex;align-items:flex-start;flex:1;min-width:0;background:var(--bg-card);border-radius:8px}.folio-card.selected{outline:2px solid var(--accent)}.folio-card{transition:box-shadow .2s ease-in-out}.folio-card.lifted{box-shadow:0 6px 16px #0000002e}.folio-card.minimized{flex:0 0 50px;width:50px;height:50px}.folio-card.minimized.hidden-memo{box-shadow:inset 0 0 0 3px var(--memo-tint)}.folio-card.minimized.hidden-memo.lifted{box-shadow:inset 0 0 0 3px var(--memo-tint),0 6px 16px #0000002e}.folio-card.minimized.hidden-memo.presence{box-shadow:inset 0 0 0 3px var(--memo-tint),0 0 0 2px var(--presence-color)}.folio-timestamps{align-self:flex-end;padding:0 10px 8px 0;font-size:9px;line-height:1.2;color:var(--text-tertiary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;pointer-events:none;-webkit-user-select:none;user-select:none}.folio-card.image-drop-target{outline:2px solid var(--accent)}.folio-main{flex:1;min-width:0;display:flex;flex-direction:column}.ellipse-anchor{width:30px;height:30px;margin:10px;flex-shrink:0}.folio-editor{flex:1;min-width:0;min-height:200px;padding:18px 15px 18px 5px;outline:none;white-space:pre-wrap;overflow-wrap:break-word;font-size:14px;line-height:1.45}.folio-editor.memo{min-height:110px;font-size:11px;color:#666}:root[data-theme=dark] .folio-editor.memo{color:#a8a8ad}.folio-editor.collapsed,.folio-editor.hug{min-height:50px}.folio-editor.collapsed{max-height:50px;overflow:hidden}.folio-editor.has-images{padding-bottom:8px}.folio-image-strip-wrap{position:relative;margin:0 10px 10px 0;flex-shrink:0}.folio-image-strip{display:flex;gap:20px;height:200px;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain}.strip-fade{position:absolute;top:0;bottom:0;width:24px;pointer-events:none}.strip-fade.left{left:0;background:linear-gradient(to right,var(--bg-card),transparent)}.strip-fade.right{right:0;background:linear-gradient(to left,var(--bg-card),transparent)}.folio-image-thumb{position:relative;height:200px;flex-shrink:0}.folio-image-thumb img{height:200px;min-width:150px;max-width:300px;object-fit:cover;border-radius:10px;cursor:zoom-in;display:block}.image-delete{position:absolute;top:6px;right:6px;width:22px;height:22px;display:none;align-items:center;justify-content:center;color:#fff;background:#0000008c;border-radius:50%}.folio-image-thumb:hover .image-delete{display:flex}.image-count-badge{position:absolute;right:8px;bottom:8px;font-size:12px;font-weight:600;line-height:1;padding:3px 8px;border-radius:999px;color:#fff;background:#0000008c;pointer-events:none;z-index:1}.lightbox-overlay{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;gap:12px;z-index:300}.lightbox-image{max-width:calc(100vw - 80px);max-height:calc(100vh - 80px);max-height:calc(100dvh - 80px);object-fit:contain;border-radius:10px}.lightbox-close{position:absolute;top:16px;right:16px;color:#ffffffd9}.lightbox-close:hover{color:#fff}.lightbox-nav{color:#ffffffd9;padding:8px}.lightbox-nav:disabled{opacity:.25;cursor:default}.folio-editor .para{min-height:1.2em}.font-family-select{width:140px}.font-weight-select{width:92px}.size-panel-wrap{position:relative;display:flex}.font-size-display{min-width:32px;background:var(--bg-card);border:1px solid var(--border-strong);border-radius:4px;font-size:12px}.size-panel{position:fixed;z-index:60;width:128px;display:flex;flex-direction:column;gap:6px;padding:8px;background:var(--bg-panel);border-radius:10px;box-shadow:0 2px 8px #00000038}.size-input{width:100%;font:inherit;font-size:12px;padding:3px 6px;border:1px solid var(--border-strong);border-radius:4px;background:var(--bg-card);color:var(--text);outline-color:var(--accent)}.size-presets{display:grid;grid-template-columns:repeat(4,1fr);gap:4px}.size-preset{font-size:12px;padding:3px 0;border-radius:4px;color:var(--toolbar-label);text-align:center}.size-preset:hover{background:var(--bg-hover-strong)}.size-preset.current{background:var(--accent);color:#fff}.path-overlay{position:absolute;inset:0;pointer-events:none;z-index:5}.ellipse-layer{position:absolute;inset:0;pointer-events:none;z-index:6}.ellipse-dot{position:absolute;width:30px;height:30px;border-radius:50%;pointer-events:auto;cursor:grab;touch-action:none}.ellipse-dot.selected{outline:2.5px solid var(--accent);outline-offset:3px}.ellipse-dot.dragging{opacity:.3;cursor:grabbing}.ellipse-dot{transition:opacity .2s ease-in-out}.ellipse-dot.focus-dimmed{opacity:0;pointer-events:none}.path-overlay path,.path-overlay line{transition:opacity .2s ease-in-out}.folio.drag-ghost{opacity:.3}.drop-layer{position:absolute;inset:0;pointer-events:none;z-index:7}.drop-preview-bar{position:absolute;border-radius:5px;background:#c3c3c3}.ghost-arc{position:absolute;inset:0;pointer-events:none}.ghost-folio{position:absolute;background:var(--bg-card);opacity:.85;border-radius:8px;overflow:hidden;pointer-events:none}.ghost-folio-ellipse{position:absolute;left:10px;top:10px;width:30px;height:30px;border-radius:50%;opacity:.45}.ghost-folio-text{position:absolute;inset:10px 10px 10px 50px;font-size:14px;color:#e6e6e6;white-space:pre-wrap;overflow:hidden}.mini-folio-stack{position:absolute;width:150px;height:80px;pointer-events:none;z-index:9}.mini-folio-card{position:absolute;width:150px;height:80px;background:#fff;border-radius:10px;box-shadow:2px 3px 6px #00000040}.mini-folio-dot{position:absolute;left:8px;top:8px;width:18px;height:18px;border-radius:50%}.path-overlay{transition:opacity .12s ease-out}.layout-animating .path-overlay{opacity:.25}.marquee-rect{position:absolute;border:1px solid color-mix(in srgb,var(--accent) 60%,transparent);background:color-mix(in srgb,var(--accent) 10%,transparent);pointer-events:none;z-index:8}.board-no-select,.board-no-select *{user-select:none!important;-webkit-user-select:none!important}.folio-menu{position:fixed;z-index:170;background:var(--bg-menu);border:1px solid var(--border);border-radius:8px;box-shadow:0 6px 24px #00000047;padding:4px;min-width:220px;max-height:calc(100vh - 16px);max-height:calc(100dvh - 16px);overflow-y:auto}.folio-menu-item{display:flex;align-items:center;gap:8px;width:100%;padding:5px 10px;border-radius:5px;text-align:left;font-size:13px;color:var(--text);white-space:nowrap}.folio-menu-item:hover:not(:disabled){background:var(--accent);color:#fff}.folio-menu-item:disabled{opacity:.4;cursor:default}.folio-menu-item.destructive{color:#c33}.folio-menu-item.destructive:hover:not(:disabled){background:#c33;color:#fff}.folio-menu-icon{display:flex;align-items:center;width:16px;flex-shrink:0}.folio-menu-separator{height:1px;background:var(--border);margin:4px 8px}.folio-menu-caption{padding:3px 10px;font-size:11px;color:var(--text-secondary);white-space:nowrap;cursor:default}.search-panel{position:absolute;top:85px;left:10px;width:min(480px,calc(100vw - 20px));z-index:140;background:var(--bg-card);border:1px solid var(--border);border-radius:12px;box-shadow:0 8px 30px #00000040;padding:0 12px 12px;display:flex;flex-direction:column;gap:8px}.app.no-action-bar .search-panel{top:55px}.search-panel-handle{display:flex;align-items:center;justify-content:center;height:14px;cursor:grab;touch-action:none}.search-panel-grip{width:36px;height:5px;border-radius:3px;background:var(--border-strong)}.search-row{display:flex;align-items:center;gap:8px}.search-row-icon{color:var(--text-secondary);flex-shrink:0}.search-field{font:inherit;font-size:13px;width:170px;padding:4px 6px;border:1px solid var(--border-strong);border-radius:5px;background:var(--bg-card);color:var(--text);outline-color:var(--accent)}.search-counter{font-size:11px;color:var(--text-secondary);min-width:34px;text-align:center}.search-spacer{flex:1}.search-close{color:var(--text-secondary);display:flex;align-items:center}.search-action{font-size:12px;padding:4px 10px;border-radius:6px;background:var(--bg-panel);color:var(--toolbar-label)}.search-action:disabled{opacity:.45;cursor:default}.search-action:hover:not(:disabled){background:var(--bg-hover-strong)}.search-status{font-size:11px;color:var(--text-secondary)}.search-results{border-top:1px solid var(--border);padding-top:6px;max-height:220px;overflow-y:auto;display:flex;flex-direction:column;gap:1px}.search-result{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;padding:5px 8px;border-radius:6px;text-align:left}.search-result:hover{background:var(--bg-hover)}.search-result.current{background:var(--bg-selected)}.search-result-project{font-size:10px;color:var(--text-secondary)}.search-result-snippet{font-size:12px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.search-result-snippet strong{color:var(--accent);font-weight:600}.sidebar-backdrop{position:fixed;inset:0;background:#0000001a;z-index:90}.sidebar{position:fixed;top:0;left:0;bottom:0;width:300px;background:var(--bg-card);color:var(--text-ui);box-shadow:2px 0 12px #00000026;z-index:100;display:flex;flex-direction:column;animation:sidebar-slide-in .25s ease-in-out}@keyframes sidebar-slide-in{0%{transform:translate(-100%)}to{transform:translate(0)}}.sidebar-logo{display:flex;align-items:center;gap:10px;height:56px;padding:0 16px;border-bottom:1px solid var(--border);flex-shrink:0}.sidebar-logo img{border-radius:7px}.sidebar-logo .wordmark-img{display:inline-block;width:136px;height:24px;background-color:var(--text-ui);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:left center;mask-position:left center}.sidebar-sortbar{display:flex;align-items:center;justify-content:flex-end;height:28px;padding:0 16px;font-size:11px;color:var(--text-secondary);border-bottom:1px solid var(--border);flex-shrink:0}.sidebar-sort-select{display:inline-flex;align-items:center;gap:4px}.sidebar-sort-select select{appearance:none;-webkit-appearance:none;border:none;background:transparent;font:inherit;font-size:11px;color:inherit;padding:0;cursor:pointer;text-align:right;text-align-last:right}.sidebar-list{flex:1;overflow-y:auto}.sidebar-footer{display:flex;align-items:center;justify-content:space-between;height:48px;padding:0 18px;border-top:1px solid var(--border);flex-shrink:0}.project-row{position:relative;width:100%;text-align:left;padding:12px 16px;display:flex;flex-direction:column;gap:2px}.project-row:hover{background:var(--bg-hover)}.project-row.selected{background:var(--surface-muted)}.project-row .name{display:flex;align-items:center;gap:6px;font-size:14px;margin-bottom:4px;padding-right:24px;min-width:0}.project-row .name .name-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-row .dates{font-size:11px;color:var(--text-tertiary);display:flex;gap:8px;white-space:nowrap}.project-row .date-label{display:inline-block;width:56px;flex-shrink:0}.project-row .delete-button{position:absolute;top:8px;right:8px;width:22px;height:22px;border-radius:5px;color:#b33;font-size:13px;display:none;align-items:center;justify-content:center}.project-row:hover .delete-button{display:flex}.project-row .delete-button:hover{background:#bb333326}.project-row .duplicate-button{position:absolute;top:8px;right:60px;width:22px;height:22px;border-radius:5px;color:var(--text-secondary);display:none;align-items:center;justify-content:center}.project-row:hover .duplicate-button{display:flex}.project-row .duplicate-button:hover{background:var(--bg-hover);color:var(--text)}.project-row .pin-button{position:absolute;top:8px;right:34px;width:22px;height:22px;border-radius:5px;color:#e08a00;display:none;align-items:center;justify-content:center}.project-row:hover .pin-button{display:flex}.project-row .pin-button:hover{background:#e08a0026}.project-row .name .pin-badge,.project-row .name .shared-badge{color:var(--text-secondary);flex-shrink:0}.trash-list{flex:1;overflow-y:auto;padding:4px 0}.trash-row{display:flex;align-items:center;gap:8px;min-height:44px;padding:4px 16px}.trash-row-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.trash-row .name{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trash-row .meta{font-size:10px;color:var(--text-tertiary)}.trash-restore,.trash-delete{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:5px;flex-shrink:0}.trash-restore{color:var(--accent)}.trash-delete{color:#e0342c}.trash-restore:hover,.trash-delete:hover{background:var(--bg-hover)}.trash-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:24px;color:var(--text-tertiary);font-size:13px}.settings-view{display:flex;flex-direction:column;height:100%;color:var(--text-ui)}.settings-header{display:flex;align-items:center;gap:8px;height:44px;padding:0 16px;font-size:15px;font-weight:600;color:var(--text-ui);border-bottom:1px solid var(--bg-chrome);text-align:left;flex-shrink:0}.settings-header:hover{background:var(--bg-hover)}.settings-body{flex:1;overflow-y:auto;padding:0 0 12px}.settings-icon-row{display:flex;align-items:center;gap:10px;width:100%;height:36px;padding:0 16px;font-size:13px;color:var(--text-ui);text-align:left}.settings-icon-row:hover:not(:disabled){background:var(--bg-hover)}.settings-icon-row:disabled{color:var(--text-tertiary);cursor:default}.settings-icon{display:flex;align-items:center;justify-content:center;width:20px;height:20px;flex-shrink:0}.settings-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 16px;font-size:12px}.settings-label{font-weight:500;flex-shrink:0}.settings-value{display:inline-flex;align-items:center;gap:4px;color:var(--text-tertiary);font-size:12px;text-align:right;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.settings-value-primary{color:var(--text-ui)}.settings-value-warning{color:var(--warning)}.settings-registered{color:#34c759}.settings-picker{display:inline-flex;align-items:center;gap:3px;color:var(--text-secondary);min-width:0}.settings-picker select{appearance:none;-webkit-appearance:none;border:none;background:transparent;font:inherit;font-size:12px;color:inherit;padding:0;max-width:150px;text-align:right;text-align-last:right;text-overflow:ellipsis;cursor:pointer}.settings-picker select:focus-visible{outline:2px solid var(--accent);border-radius:3px}.settings-row .switch{width:30px;height:17px;border-radius:9px}.settings-row .switch-knob{width:13px;height:13px}.settings-row .switch[aria-checked=true] .switch-knob{transform:translate(13px)}.settings-stepper{display:flex;align-items:center;gap:3px;font-size:12px;color:var(--text-secondary)}.settings-stepper span{min-width:22px;text-align:center}.settings-stepper button{display:flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:4px;color:var(--text-secondary)}.settings-stepper button:hover:not(:disabled){background:var(--bg-hover)}.settings-stepper button:disabled{color:var(--text-tertiary);cursor:default}.settings-slider{display:flex;align-items:center;gap:8px;flex:1;min-width:0;justify-content:flex-end}.settings-slider input[type=range]{flex:1;min-width:60px;max-width:140px;accent-color:var(--accent)}.settings-slider-value{min-width:28px;text-align:right;font-size:12px;color:var(--text-secondary)}.settings-caption{font-size:10px;color:var(--text-tertiary);line-height:1.5;margin:0;padding:0 16px 6px;white-space:pre-line}.settings-caption-error{color:#d0342c}:root[data-theme=dark] .settings-caption-error{color:#ff6b63}.settings-separator{height:1px;margin:8px 0;background:var(--bg-chrome);flex-shrink:0}.settings-code{display:flex;align-items:center;justify-content:flex-end;gap:6px;flex:1;min-width:0}.settings-inset{padding:0 16px 8px}.settings-text-input{flex:1;max-width:150px;min-width:0;font:inherit;font-size:12px;padding:3px 6px;border:1px solid var(--border-strong);border-radius:4px;background:var(--bg-card);color:var(--text);outline-color:var(--accent)}.settings-text-input[aria-invalid=true]{border-color:#d0342c}.settings-code .text-button:disabled{opacity:.35}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);background:#000000bf;color:#fff;font-size:13px;padding:10px 18px;border-radius:8px;z-index:200;max-width:80vw}.shortcut-overlay{position:fixed;inset:0;background:#0003;display:flex;align-items:center;justify-content:center;z-index:150}.shortcut-panel{display:flex;flex-direction:column;width:min(460px,calc(100vw - 32px));max-height:min(520px,calc(100vh - 32px));max-height:min(520px,calc(100dvh - 32px));padding:20px;background:var(--bg-card);color:var(--toolbar-label);border-radius:12px;box-shadow:0 10px 40px #00000040}.shortcut-panel-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:10px;border-bottom:1px solid var(--border);flex-shrink:0}.shortcut-panel h2{margin:0;font-size:15px;font-weight:600}.shortcut-close{display:flex;color:var(--text-secondary)}.shortcut-close:hover{color:var(--text)}.shortcut-panel-body{overflow-y:auto;padding-top:8px}.shortcut-panel h3{margin:10px 0 0;font-size:11px;font-weight:600;color:var(--text-secondary)}.help-row{display:flex;align-items:baseline;gap:10px;margin-top:8px}.help-row .keys{font-size:12px;font-weight:500;padding:2px 6px;border-radius:4px;background:var(--surface-muted);min-width:140px;white-space:nowrap;flex-shrink:0}.help-row .desc{font-size:13px}.loading{display:flex;align-items:center;justify-content:center;height:100%;color:var(--text-secondary)}.init-error{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;height:100%;padding:24px;text-align:center}.init-error-icon{font-size:34px}.init-error h2{margin:0;font-size:17px}.init-error p{margin:0;max-width:460px;font-size:13px;color:var(--text-secondary);line-height:1.6}.print-root{display:none}@media print{#root{display:none!important}html,body{height:auto;background:#f2f2f2;print-color-adjust:exact;-webkit-print-color-adjust:exact}.print-root{display:block;background:#f2f2f2}.print-root .side-toggle,.print-root .row-menu-toggle,.print-root .add-row-button,.print-root .image-count-badge,.print-root .folio-timestamps{visibility:hidden}}.switch{position:relative;flex-shrink:0;width:38px;height:22px;padding:0;border:none;border-radius:11px;background:var(--border-strong);cursor:pointer;transition:background .15s ease}.switch[aria-checked=true]{background:var(--accent)}.switch:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.switch:disabled{opacity:.5;cursor:default}.switch-knob{position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 2px #0000004d;transition:transform .15s ease}.switch[aria-checked=true] .switch-knob{transform:translate(16px)}.switch.busy .switch-knob{animation:switch-pulse 1s ease-in-out infinite}@keyframes switch-pulse{0%,to{opacity:1}50%{opacity:.35}}.share-wrap{position:relative;display:flex}.share-button{position:relative}.share-badge{position:absolute;top:-2px;right:-3px;min-width:14px;height:14px;padding:0 3px;border-radius:7px;background:var(--accent);color:#fff;font-size:9px;font-weight:600;line-height:14px;text-align:center;pointer-events:none}.share-panel{position:fixed;z-index:120;width:340px;display:flex;flex-direction:column;gap:8px;padding:12px;background:var(--bg-panel);color:var(--text);border-radius:10px;box-shadow:0 2px 8px #00000038;font-size:12px;text-align:left}.share-heading{font-weight:600;font-size:13px}.share-label{font-size:11px;color:var(--text-secondary)}.share-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.share-name-row span{flex-shrink:0}.share-name-input,.share-url-input{flex:1;min-width:0;font:inherit;font-size:12px;padding:4px 6px;border:1px solid var(--border-strong);border-radius:4px;background:var(--bg-card);color:var(--text);outline-color:var(--accent)}.share-url-row{display:flex;align-items:center;gap:6px}.share-url-input{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:11px}.share-url-row .text-button,.share-leave{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}.share-leave{align-self:flex-start}.share-participants{list-style:none;margin:0;padding:0;max-height:160px;overflow:auto;display:flex;flex-direction:column;gap:4px}.share-participants li{display:flex;align-items:center;gap:6px;min-width:0}.share-participant-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.share-dot{flex-shrink:0;width:9px;height:9px;border-radius:50%}.share-tag{flex-shrink:0;font-size:10px;padding:0 5px;border-radius:6px;background:var(--bg-hover-strong);color:var(--text-secondary)}.share-status{font-size:11px;color:var(--text-secondary)}.share-error{color:#d0342c}:root[data-theme=dark] .share-error{color:#ff6b63}.share-caption{font-size:11px;line-height:1.45;color:var(--text-secondary)}.join-panel{background:var(--bg-menu);color:var(--text);border-radius:14px;box-shadow:0 10px 40px #0000004d;padding:20px 26px;min-width:min(360px,90vw);max-width:90vw;display:flex;flex-direction:column;gap:10px;font-size:13px}.join-panel h2{margin:0;font-size:16px}.join-panel p{margin:0;line-height:1.5}.join-caption{font-size:12px;color:var(--text-secondary)}.join-error{color:#d0342c}:root[data-theme=dark] .join-error{color:#ff6b63}.join-name-row{display:flex;align-items:center;gap:10px}.join-name-row span{flex-shrink:0;color:var(--text-secondary);font-size:12px}.join-progress{display:flex;align-items:center;gap:8px;color:var(--text)}.join-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}.text-button.primary{background:var(--accent);border-color:var(--accent);color:#fff}.text-button.primary:hover{filter:brightness(1.08)}.spin{animation:spin .9s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.project-row .name .shared-badge{color:var(--accent);margin-right:4px;vertical-align:-1px}.folio-card.presence{box-shadow:0 0 0 2px var(--presence-color)}.folio-card.presence.lifted{box-shadow:0 0 0 2px var(--presence-color),0 6px 16px #0000002e}.presence-tag{position:absolute;top:-8px;right:-6px;font-size:9px;font-weight:500;line-height:1.2;padding:2px 5px;border-radius:4px;color:#fff;pointer-events:none;z-index:1;max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.share-debug{margin-top:8px;font-size:11px;color:var(--text-secondary)}.share-debug summary{cursor:pointer;-webkit-user-select:none;user-select:none}.share-debug pre{margin:6px 0;padding:6px 8px;max-height:160px;overflow:auto;font-size:10px;line-height:1.4;white-space:pre-wrap;word-break:break-all;background:var(--bg-hover);border-radius:6px;-webkit-user-select:text;user-select:text}.onboarding{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;padding:24px;overflow:auto;background:var(--bg-board);color:var(--text)}.onboarding-panel{display:flex;flex-direction:column;align-items:stretch;width:min(360px,100%);padding:32px 28px;text-align:center;background:var(--bg-card);border-radius:14px;box-shadow:0 10px 40px #0000001f}.onboarding-logo{display:flex;align-items:center;justify-content:center;gap:10px}.onboarding-logo img{border-radius:7px}.onboarding-logo .wordmark-img{display:inline-block;width:136px;height:24px;background-color:var(--text-ui);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center}.onboarding-panel h1{margin:28px 0 0;font-size:20px;font-weight:600}.onboarding-subtitle{margin:8px 0 28px;font-size:13px;line-height:1.5;color:var(--text-secondary)}.onboarding-button{display:flex;align-items:center;justify-content:center;height:44px;border-radius:10px;background:var(--bg-card);border:1px solid var(--border-strong);color:var(--text);font-size:15px;font-weight:600;cursor:pointer}.onboarding-button:hover:not(:disabled){background:var(--bg-hover)}.onboarding-button:disabled{opacity:.45;cursor:default}.onboarding-caption+.onboarding-button{margin-top:12px}.onboarding-caption{margin:6px 0 0;font-size:11px;line-height:1.5;color:var(--text-tertiary)}.onboarding-later{margin-top:24px;height:40px;background:none;border:none;color:var(--text-secondary);font-size:14px;font-weight:500;cursor:pointer}.onboarding-later:hover:not(:disabled){text-decoration:underline}.onboarding-later:disabled{opacity:.5;cursor:default}.onboarding-error{margin:20px 0 0;font-size:12px;line-height:1.5;color:#d0342c}:root[data-theme=dark] .onboarding-error{color:#ff6b63}
