*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;font-size:calc(13px * var(--font-scale, 1));--font-scale: 1;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--bg: #0e0e10;--surface-1: #16161a;--surface-2: #1e1e24;--border: rgba(255, 255, 255, .07);--text-primary: #e4e4e8;--text-secondary: #888890;--text-muted: #4a4a54;--accent: #45f941;--accent-dim: rgba(69, 249, 65, .12);--app-header-h: 40px;--col-header-h: 40px;--col-gap: 12px;--mobile-tabs-h: 40px;--mobile-nav-h: 48px;--radius: 4px;--t: .15s ease-out;background:var(--bg);color:var(--text-primary)}body{min-height:100dvh}.app-loading,.app-error{display:flex;align-items:center;justify-content:center;height:100dvh;color:var(--text-muted);font-size:.85rem}.app-layout{height:100dvh;display:flex;flex-direction:column;overflow:hidden}.app-header{height:var(--app-header-h);flex-shrink:0;display:flex;align-items:center;justify-content:space-between;padding:0 16px;background:var(--surface-1);border-bottom:1px solid var(--border)}.app-title{font-weight:600;font-size:.8rem;letter-spacing:.1em;color:var(--text-muted);text-transform:lowercase;display:flex;align-items:center;gap:7px}.app-version{font-size:.6rem;font-weight:400;letter-spacing:.04em;color:var(--text-muted);opacity:.45}.sp-version{font-size:11px;color:var(--text-muted);opacity:.45}.app-favicon{width:18px;height:18px;object-fit:contain;flex-shrink:0}.app-header-right{display:flex;align-items:center;gap:14px}.last-updated{font-size:.75rem;color:var(--text-muted)}.sign-out-btn{background:none;border:1px solid var(--border);color:var(--text-secondary);padding:3px 10px;border-radius:var(--radius);cursor:pointer;font-size:.75rem;font-family:inherit;transition:border-color var(--t),color var(--t)}.sign-out-btn:hover{border-color:#ffffff26;color:var(--text-primary)}.columns-wrapper{flex:1;display:flex;gap:var(--col-gap);padding:0 var(--col-gap) var(--col-gap);min-height:0;overflow:hidden}.column{flex:1;min-width:0;min-height:0;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--surface-2) transparent}.column::-webkit-scrollbar{width:4px}.column::-webkit-scrollbar-track{background:transparent}.column::-webkit-scrollbar-thumb{background:var(--surface-2);border-radius:2px}.column-header{position:sticky;top:0;z-index:20;height:var(--col-header-h);display:flex;align-items:center;padding:0 2px;background:var(--bg)}.column-username{font-size:.68rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted)}.section{margin-bottom:6px}.section-header{position:sticky;top:var(--col-header-h);z-index:10;display:flex;align-items:center;gap:7px;padding:7px 10px;background:var(--s-bg, var(--surface-2));cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:var(--radius) var(--radius) 0 0;transition:border-radius 0ms 0ms}.section.collapsed .section-header{border-radius:var(--radius);transition:border-radius 0ms .2s}.section-header:hover{filter:brightness(1.07)}.section-header.draggable{cursor:grab}.section-header.draggable:active{cursor:grabbing}.collapse-icon{flex-shrink:0;color:var(--s-fg, var(--text-muted));opacity:.5;transform:rotate(-90deg);transition:transform .2s ease-out,opacity var(--t)}.collapse-icon.open{transform:rotate(0);opacity:.65}.section-icon{flex-shrink:0;font-size:.88rem;line-height:1}.section-name{flex:1;font-size:.8rem;font-weight:600;letter-spacing:.01em;color:var(--s-fg, var(--text-primary));white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.new-badge{display:inline-flex;align-items:center;font-size:.56rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;padding:1px 5px;border-radius:3px;background:var(--s-accent);color:var(--s-bg);line-height:1.5;flex-shrink:0;margin-left:5px;pointer-events:none;-webkit-user-select:none;user-select:none}.section-menu-btn{flex-shrink:0;background:none;border:none;color:var(--s-fg, var(--text-secondary));padding:2px 5px;border-radius:3px;font-size:.7rem;letter-spacing:.2em;line-height:1;cursor:pointer;font-family:inherit;opacity:0;transition:opacity var(--t),background var(--t)}.section-header:hover .section-menu-btn{opacity:.4}.section-menu-btn:hover{opacity:1!important;background:#ffffff14}.section-body{display:grid;grid-template-rows:1fr;transition:grid-template-rows .2s ease-out}.section-body.collapsed{grid-template-rows:0fr}.section-content{min-height:0;overflow:hidden;background:var(--s-bg, var(--surface-1));border-radius:0 0 var(--radius) var(--radius);padding-bottom:3px}.list-item{display:flex;align-items:flex-start;gap:8px;padding:4px 10px;transition:background var(--t)}.list-item:hover{background:#ffffff07}.item-checkbox{flex-shrink:0;margin-top:2px;width:13px;height:13px;accent-color:var(--s-accent, var(--accent));cursor:pointer}.item-bullet{flex-shrink:0;margin-top:4px;width:5px;height:5px;border-radius:50%;background:var(--s-accent, var(--accent));flex-basis:5px}.item-content{flex:1;min-width:0;font-size:.85rem;color:var(--s-text, var(--text-primary));line-height:1.55;word-break:break-word}.section-empty{padding:8px 10px;font-size:.75rem;color:var(--text-muted)}.mobile-col-tabs,.mobile-nav{display:none}@media(max-width:768px){.app-header{display:none}.columns-wrapper{padding:0;gap:0}.column{display:none}.column.active{display:block;flex:1;min-height:0;overflow-y:auto;padding:0 10px 10px}.mobile-col-tabs{display:flex;flex-shrink:0;height:var(--mobile-tabs-h);background:var(--surface-1);border-bottom:1px solid var(--border);order:-1}.col-tab{flex:1;background:none;border:none;color:var(--text-muted);font-size:.78rem;font-weight:500;font-family:inherit;cursor:pointer;letter-spacing:.04em;transition:color var(--t),background var(--t);-webkit-tap-highlight-color:transparent}.col-tab.active{color:var(--accent);background:var(--accent-dim)}.columns-wrapper:not(.multi-col) .column-header{display:none}.columns-wrapper:not(.multi-col) .column{--col-header-h: 0px}.col-tab.multi{opacity:.45;transition:color var(--t),background var(--t),opacity var(--t)}.col-tab.multi.active{opacity:1;color:var(--accent);background:var(--accent-dim)}.columns-wrapper.multi-col{flex-direction:column;overflow-y:auto;gap:0}.columns-wrapper.multi-col .column.active{display:block;flex:none;min-height:unset;overflow-y:visible;padding:0 10px 10px}.mobile-nav{display:flex;flex-shrink:0;height:var(--mobile-nav-h);align-items:center;justify-content:space-between;padding:0 16px;background:var(--surface-1);border-bottom:1px solid var(--border);order:-2}.mobile-nav-btn{background:none;border:none;color:var(--text-secondary);cursor:pointer;padding:8px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius);transition:color var(--t),background var(--t);-webkit-tap-highlight-color:transparent}.mobile-nav-btn:active{color:var(--text-primary);background:var(--surface-2)}.mobile-last-updated{font-size:.72rem;color:var(--text-muted)}}.btn-primary{background:var(--accent);color:#0d1a0d;border:none;border-radius:3px;padding:5px 12px;font-size:.78rem;font-weight:600;font-family:inherit;cursor:pointer;transition:opacity var(--t);white-space:nowrap}.btn-primary:disabled{opacity:.35;cursor:not-allowed}.btn-primary:hover:not(:disabled){opacity:.88}.btn-ghost{background:none;border:1px solid var(--border);color:var(--text-secondary);border-radius:3px;padding:5px 10px;font-size:.78rem;font-family:inherit;cursor:pointer;transition:border-color var(--t),color var(--t);white-space:nowrap}.btn-ghost:hover{border-color:#ffffff26;color:var(--text-primary)}.btn-danger{background:none;border:1px solid transparent;color:#ff6b6b;border-radius:3px;padding:5px 10px;font-size:.78rem;font-family:inherit;cursor:pointer;transition:background var(--t),border-color var(--t);white-space:nowrap}.btn-danger:hover{background:#ff55551a;border-color:#ff55554d}.menu-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000}.section-menu{position:fixed;z-index:1001;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);padding:4px;min-width:152px;box-shadow:0 8px 24px #00000080}.section-menu-item{display:flex;align-items:center;width:100%;padding:6px 8px;background:none;border:none;color:var(--text-secondary);font-size:.8rem;font-family:inherit;text-align:left;border-radius:3px;cursor:pointer;transition:background var(--t),color var(--t);white-space:nowrap}.section-menu-item:hover{background:#ffffff0f;color:var(--text-primary)}.section-menu-item.danger:hover{background:#ff55551a;color:#ff6b6b}.section-menu-divider{border:none;border-top:1px solid var(--border);margin:3px 0}.section-menu-confirm-text{font-size:.78rem;color:var(--text-secondary);padding:6px 8px 8px;line-height:1.45}.section-menu-confirm-actions{display:flex;gap:4px;padding:0 4px 4px;justify-content:flex-end}.palette-picker-header{font-size:.68rem;color:var(--text-muted);padding:6px 8px 4px;letter-spacing:.08em;text-transform:uppercase}.palette-swatch-row{display:flex;flex-wrap:wrap;gap:6px;padding:2px 8px 8px}.palette-swatch-btn{width:24px;height:24px;border-radius:3px;border:1px solid rgba(255,255,255,.08);cursor:pointer;padding:0;flex-shrink:0;transition:transform var(--t),box-shadow var(--t)}.palette-swatch-btn:hover{transform:scale(1.1)}.palette-swatch-btn.selected{box-shadow:0 0 0 2px #ffffffbf}.section-name-input{flex:1;min-width:0;background:#ffffff0f;border:1px solid rgba(255,255,255,.14);border-radius:3px;color:var(--s-fg, var(--text-primary));font-size:.8rem;font-weight:600;font-family:inherit;letter-spacing:.01em;padding:1px 6px;outline:none}.section-name-input:focus{border-color:#ffffff47}.create-section-area{padding:8px 0 6px}.create-section-btn{width:100%;background:none;border:1px dashed var(--border);color:var(--text-muted);padding:7px 10px;border-radius:var(--radius);font-size:.78rem;font-family:inherit;cursor:pointer;text-align:left;transition:border-color var(--t),color var(--t),background var(--t)}.create-section-btn:hover{border-color:#ffffff24;color:var(--text-secondary);background:#ffffff05}.create-section-form{background:var(--surface-2);border-radius:var(--radius);padding:10px;display:flex;flex-direction:column;gap:8px}.create-section-name-input{background:#ffffff0d;border:1px solid var(--border);border-radius:3px;color:var(--text-primary);font-size:.85rem;font-family:inherit;padding:6px 8px;outline:none;width:100%}.create-section-name-input:focus{border-color:#ffffff2e}.type-selector{display:flex;gap:4px}.type-btn{flex:1;background:none;border:1px solid var(--border);color:var(--text-muted);padding:4px;border-radius:3px;font-size:.72rem;font-family:inherit;cursor:pointer;transition:background var(--t),color var(--t),border-color var(--t)}.type-btn:hover{color:var(--text-secondary);border-color:#ffffff1f}.type-btn.active{background:var(--accent-dim);color:var(--accent);border-color:#45f94138}.create-section-footer{display:flex;gap:6px;justify-content:flex-end}.add-item-row{display:flex;align-items:center;gap:8px;padding:3px 10px 7px}.add-item-checkbox-ghost{width:13px;height:13px;border:1.5px solid var(--text-muted);border-radius:2px;opacity:.3;flex-shrink:0}.add-item-bullet-ghost{width:5px;height:5px;border-radius:50%;background:var(--s-accent, var(--text-muted));opacity:.3;flex-shrink:0}.add-item-input{flex:1;min-width:0;background:none;border:none;border-bottom:1px solid transparent;color:var(--text-muted);font-size:.82rem;font-family:inherit;padding:2px 0;outline:none;transition:border-color var(--t),color var(--t)}.add-item-input:focus{border-color:var(--border);color:var(--text-primary)}.add-item-input::placeholder{color:var(--text-muted);opacity:.55}.list-item.editable{cursor:text}.item-editor{flex:1;min-width:0;outline:none;color:var(--s-text, var(--text-primary));font-size:.85rem;font-family:inherit;line-height:1.55;word-break:break-word;white-space:pre-wrap}.item-delete-btn{flex-shrink:0;background:none;border:none;color:var(--text-muted);cursor:pointer;padding:1px 3px;border-radius:2px;opacity:0;transition:opacity var(--t),color var(--t),background var(--t);font-size:.65rem;line-height:1;font-family:inherit;margin-top:2px}.list-item:hover .item-delete-btn{opacity:1}.item-delete-btn:hover{color:#ff6b6b;background:#ff55551a}.item-grip{flex-shrink:0;display:flex;align-items:center;padding:0 4px 0 2px;color:var(--text-muted);opacity:0;cursor:grab;touch-action:none}.item-grip:active{cursor:grabbing}.list-item:hover .item-grip{opacity:1}.item-reaction-badges{display:flex;flex-direction:column;align-items:center;gap:1px;flex-shrink:0;margin-right:4px}.item-reaction-badge,.item-reaction-badge-icon{width:20px;height:20px;border-radius:50%;object-fit:cover;display:flex;align-items:center;justify-content:center}.item-reaction-badge{margin-bottom:-4px}.item-reaction-badge-icon{color:var(--text-secondary)}.item-react-btns{display:flex;gap:2px;align-items:center;flex-shrink:0;margin-left:auto;opacity:0;transition:opacity var(--t)}.list-item:hover .item-react-btns{opacity:1}.item-react-btn{background:none;border:1px solid rgba(255,255,255,.08);border-radius:var(--radius);color:var(--text-muted);width:22px;height:22px;padding:0;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:color var(--t),border-color var(--t),background var(--t)}.item-react-btn img{width:14px;height:14px;object-fit:cover;border-radius:2px}.item-react-btn:hover{border-color:#fff3;color:var(--text-primary)}.item-react-btn.active{border-color:var(--accent);color:var(--accent)}.item-longpress-menu{position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);background:var(--surface-2);border:1px solid var(--border);border-radius:6px;padding:8px;display:flex;gap:8px;align-items:center;z-index:50;box-shadow:0 4px 16px #0006}.list-item{position:relative}.longpress-btn{display:flex;flex-direction:column;align-items:center;gap:4px;background:none;border:1px solid var(--border);border-radius:var(--radius);padding:6px 10px;color:var(--text-secondary);cursor:pointer;font-size:11px}.longpress-btn.active{border-color:var(--accent);color:var(--accent)}.longpress-img{width:20px;height:20px;object-fit:cover;border-radius:2px}.longpress-cancel{background:none;border:none;color:var(--text-muted);font-size:11px;cursor:pointer;padding:4px 6px}.gallery-content{padding:8px;display:flex;flex-direction:column;gap:8px}.gallery-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:4px}.gallery-thumb{position:relative;aspect-ratio:1;border-radius:var(--radius);overflow:hidden;background:var(--surface-2)}.gallery-thumb-img{width:100%;height:100%;object-fit:cover;display:block}.gallery-thumb-skeleton{width:100%;height:100%;background:var(--surface-2);animation:pulse 1.5s infinite}@keyframes pulse{0%,to{opacity:.4}50%{opacity:.7}}.gallery-thumb-name{position:absolute;bottom:0;left:0;right:0;padding:2px 4px;background:#0009;font-size:10px;color:#ddd;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:0;transition:opacity var(--t)}.gallery-thumb:hover .gallery-thumb-name{opacity:1}.gallery-thumb-delete{position:absolute;top:2px;right:2px;background:#0009;border:none;color:#fff;border-radius:50%;width:18px;height:18px;font-size:9px;cursor:pointer;display:none;align-items:center;justify-content:center;line-height:1}.gallery-thumb:hover .gallery-thumb-delete{display:flex}.gallery-show-more{background:none;border:1px solid var(--border);border-radius:var(--radius);color:var(--text-muted);font-size:11px;padding:4px 8px;cursor:pointer;align-self:center;transition:color var(--t),border-color var(--t)}.gallery-show-more:hover{color:var(--text-secondary);border-color:#fff3}.gallery-dropzone{display:flex;align-items:center;justify-content:center;gap:6px;border:1px dashed var(--border);border-radius:var(--radius);padding:10px 6px;cursor:pointer;color:var(--text-muted);font-size:11px;transition:color var(--t),border-color var(--t),background var(--t);-webkit-user-select:none;user-select:none}.gallery-dropzone:hover{color:var(--text-secondary);border-color:#ffffff40}.gallery-dropzone.drag-over{border-color:var(--s-accent, var(--accent));background:#ffffff0a;color:var(--text-primary)}.gallery-dropzone-icon{font-size:14px;line-height:1;flex-shrink:0}.gallery-dropzone-text{line-height:1.3}.gallery-upload-preview{display:flex;flex-direction:column;gap:6px;padding:8px;background:var(--surface-2);border-radius:var(--radius);border:1px solid var(--border)}.gallery-preview-img{width:100%;max-height:160px;object-fit:contain;border-radius:var(--radius)}.gallery-name-input{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-primary);font-size:12px;padding:5px 8px;outline:none}.gallery-name-input:focus{border-color:#ffffff40}.gallery-preview-actions{display:flex;gap:6px;justify-content:flex-end}.sp-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;z-index:200;display:flex;justify-content:flex-end}.sp-panel{width:340px;max-width:100vw;height:100%;background:var(--surface-1);border-left:1px solid var(--border);display:flex;flex-direction:column;animation:slideInRight .18s ease-out}@keyframes slideInRight{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes slideInLeft{0%{transform:translate(-100%)}to{transform:translate(0)}}@media(max-width:768px){.sp-overlay{justify-content:flex-start}.sp-panel{border-left:none;border-right:1px solid var(--border);animation:slideInLeft .18s ease-out}}.sp-header{display:flex;align-items:center;justify-content:space-between;padding:0 16px;height:44px;border-bottom:1px solid var(--border);flex-shrink:0}.sp-title{font-size:13px;font-weight:600;color:var(--text-primary)}.sp-close{background:none;border:none;color:var(--text-muted);cursor:pointer;padding:6px;border-radius:var(--radius);display:flex;align-items:center;transition:color var(--t)}.sp-close:hover{color:var(--text-secondary)}.sp-tabs{display:flex;border-bottom:1px solid var(--border);flex-shrink:0}.sp-tab{flex:1;background:none;border:none;border-bottom:2px solid transparent;color:var(--text-muted);font-size:12px;padding:10px 4px;cursor:pointer;transition:color var(--t),border-color var(--t);margin-bottom:-1px}.sp-tab.active{color:var(--text-primary);border-bottom-color:var(--accent)}.sp-tab:hover:not(.active){color:var(--text-secondary)}.sp-body{flex:1;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:8px}.sp-input{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-primary);font-size:12px;padding:6px 8px;outline:none;box-sizing:border-box;font-family:inherit}.sp-input:focus{border-color:#ffffff40}.sp-field{display:flex;flex-direction:column;gap:4px;font-size:11px;color:var(--text-muted)}.sp-color-field{flex-direction:row;align-items:center;justify-content:space-between}.sp-color-row{display:flex;align-items:center;gap:6px}.sp-color-row input[type=color]{width:28px;height:22px;border:1px solid var(--border);border-radius:var(--radius);background:none;cursor:pointer;padding:1px}.sp-color-hex{font-size:11px;color:var(--text-muted);font-family:monospace}.sp-form{display:flex;flex-direction:column;gap:10px}.sp-primary-btn{background:var(--accent);color:#000;border:none;border-radius:var(--radius);font-size:12px;font-weight:600;padding:7px 14px;cursor:pointer;align-self:flex-start;transition:opacity var(--t)}.sp-primary-btn:disabled{opacity:.5;cursor:default}.sp-ghost-btn{background:none;border:1px solid var(--border);border-radius:var(--radius);color:var(--text-secondary);font-size:12px;padding:5px 10px;cursor:pointer;transition:border-color var(--t),color var(--t)}.sp-ghost-btn:hover{border-color:#ffffff40;color:var(--text-primary)}.sp-ghost-btn:disabled{opacity:.5;cursor:default}.sp-danger-btn{background:none;border:1px solid rgba(255,80,80,.3);border-radius:var(--radius);color:#ff6b6b;font-size:11px;padding:4px 8px;cursor:pointer;transition:background var(--t);align-self:flex-start;margin-top:4px}.sp-danger-btn:hover{background:#ff50501a}.sp-error{font-size:11px;color:#ff6b6b;margin:0}.sp-success{font-size:11px;color:var(--accent);margin:0}.sp-hint{font-size:11px;color:var(--text-muted);margin:0 0 4px;line-height:1.5}.sp-hidden-input{display:none}.sp-add-btn{background:none;border:1px dashed var(--border);border-radius:var(--radius);color:var(--text-muted);font-size:12px;padding:6px;cursor:pointer;width:100%;transition:color var(--t),border-color var(--t)}.sp-add-btn:hover{color:var(--text-secondary);border-color:#fff3}.sp-palette-list{display:flex;flex-direction:column;gap:2px}.sp-palette-item{border-radius:var(--radius);overflow:hidden}.sp-palette-row{display:flex;align-items:center;gap:8px;width:100%;background:none;border:1px solid var(--border);border-radius:var(--radius);padding:8px 10px;color:var(--text-secondary);cursor:pointer;font-size:12px;text-align:left;transition:background var(--t)}.sp-palette-row:hover{background:var(--surface-2)}.sp-palette-swatch{width:18px;height:18px;border-radius:3px;flex-shrink:0}.sp-palette-name{flex:1}.sp-palette-detail{display:flex;flex-direction:column;gap:8px;padding:10px;background:var(--surface-2);border:1px solid var(--border);border-top:none;border-radius:0 0 var(--radius) var(--radius)}.sp-reaction-section{display:flex;flex-direction:column;gap:10px}.sp-reaction-row{display:flex;align-items:center;gap:8px;padding:8px;background:var(--surface-2);border-radius:var(--radius);border:1px solid var(--border)}.sp-reaction-label{font-size:12px;color:var(--text-secondary);flex:1}.sp-reaction-preview{width:32px;height:32px;display:flex;align-items:center;justify-content:center}.sp-reaction-img{width:28px;height:28px;object-fit:cover;border-radius:4px}.sp-reaction-empty{font-size:10px;color:var(--text-muted)}.header-icon-btn{background:none;border:none;color:var(--text-muted);cursor:pointer;padding:5px;border-radius:var(--radius);display:flex;align-items:center;transition:color var(--t)}.header-icon-btn:hover{color:var(--text-secondary)}.login-page{display:flex;align-items:center;justify-content:center;min-height:100dvh}.login-form{display:flex;flex-direction:column;gap:12px;width:100%;max-width:320px;padding:0 16px}.login-form h1{margin-bottom:4px;font-size:1.5rem;letter-spacing:.05em}.login-form input{padding:10px 12px;border:1px solid #2a2a2a;border-radius:var(--radius);background:#1a1a1a;color:#eee;font-size:1rem;font-family:inherit}.login-form input:focus{outline:none;border-color:#444}.login-form button{padding:10px;background:#45f941;color:#0d1a0d;border:none;border-radius:var(--radius);font-size:1rem;font-weight:600;cursor:pointer;font-family:inherit;transition:opacity var(--t)}.login-form button:disabled{opacity:.5;cursor:not-allowed}.login-form button:hover:not(:disabled){opacity:.88}.login-stay{display:flex;align-items:center;gap:8px;font-size:.8rem;color:var(--text-muted);cursor:pointer;-webkit-user-select:none;user-select:none}.login-stay input[type=checkbox]{accent-color:var(--accent);width:14px;height:14px;cursor:pointer}.login-error{color:#ff6b6b;font-size:.875rem}.at-chip{display:inline-block;background:var(--accent-dim);color:var(--accent);font-weight:600;font-size:.8rem;border-radius:4px;padding:0 5px;line-height:1.6;vertical-align:baseline;white-space:nowrap;-webkit-user-select:none;user-select:none}.at-chip.clickable{cursor:pointer;transition:background var(--t)}.at-chip.clickable:hover{background:#45f94138}.at-picker{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;min-width:180px;max-width:260px;max-height:224px;overflow-y:auto;box-shadow:0 6px 20px #0000008c;padding:4px;display:flex;flex-direction:column;gap:2px}.at-picker-item{display:flex;align-items:center;gap:8px;width:100%;padding:4px 6px;background:none;border:none;border-radius:3px;color:var(--text-secondary);font-size:12px;font-family:inherit;text-align:left;cursor:pointer;transition:background var(--t),color var(--t)}.at-picker-item.selected,.at-picker-item:hover{background:var(--accent-dim);color:var(--accent)}.at-picker-thumb{width:28px;height:28px;border-radius:3px;overflow:hidden;flex-shrink:0;background:var(--surface-1);display:flex;align-items:center;justify-content:center}.at-picker-thumb img{width:100%;height:100%;object-fit:cover}.at-picker-thumb-empty{width:100%;height:100%;background:var(--surface-2)}.at-picker-name{font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.link-chip{display:inline-flex;align-items:baseline;gap:2px;background:var(--accent-dim);color:var(--accent);border-radius:4px;padding:1px 5px 1px 4px;font-size:.88em;font-weight:600;white-space:nowrap;-webkit-user-select:none;user-select:none;cursor:pointer;transition:background var(--t)}.link-chip:hover{background:#45f94138}.link-chip-arrow{font-size:.75em;opacity:.7}.url-suggest-popup{position:fixed;z-index:300;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);padding:8px 10px;display:flex;flex-direction:column;gap:6px;min-width:220px;max-width:300px;box-shadow:0 4px 16px #00000059}.url-suggest-url{font-size:.75em;color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.url-suggest-input{background:var(--surface-1);border:1px solid var(--border);border-radius:4px;padding:4px 7px;font-size:.88em;color:var(--text-1);outline:none}.url-suggest-input:focus{border-color:var(--accent)}.url-suggest-actions{display:flex;align-items:center;gap:6px}.url-suggest-btn{flex:1;background:var(--accent-dim);color:var(--accent);border:none;border-radius:4px;padding:4px 8px;font-size:.82em;font-weight:600;cursor:pointer;transition:background var(--t)}.url-suggest-btn:hover{background:#45f94138}.url-suggest-dismiss{background:transparent;border:none;color:var(--text-2);cursor:pointer;padding:2px 4px;font-size:.9em;border-radius:4px;transition:color var(--t)}.url-suggest-dismiss:hover{color:var(--text-1)}.link-preview-popup{position:fixed;z-index:300;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);padding:6px 10px;display:flex;flex-direction:column;gap:2px;min-width:140px;max-width:220px;box-shadow:0 4px 14px #0000004d;pointer-events:auto}.link-preview-popup.copied{border-color:var(--accent)}.link-preview-url{font-size:.75em;color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.link-preview-hint{font-size:.72em;color:var(--text-2);opacity:.6}.link-preview-copied{font-size:.82em;font-weight:600;color:var(--accent)}.img-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:500;background:#000000d9;display:flex;align-items:center;justify-content:center;animation:fade-in .15s ease-out;touch-action:none;-webkit-user-select:none;user-select:none}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.img-overlay-img{max-width:90vw;max-height:90vh;object-fit:contain;border-radius:var(--radius);transform-origin:center;pointer-events:none;flex-shrink:0}.img-overlay-loading{color:var(--text-muted);font-size:13px}.img-overlay-close{position:absolute;top:16px;right:16px;background:#0009;border:1px solid var(--border);border-radius:var(--radius);color:var(--text-secondary);font-size:13px;width:28px;height:28px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:color var(--t),background var(--t)}.img-overlay-close:hover{color:var(--text-primary);background:#ffffff1a}.img-overlay-name{position:absolute;bottom:16px;left:50%;transform:translate(-50%);color:var(--accent);font-size:12px;font-weight:600;background:#0009;padding:3px 8px;border-radius:var(--radius)}.gallery-name-field{display:flex;align-items:center;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;width:100%}.gallery-name-at{padding:0 8px 0 10px;color:var(--accent);font-weight:700;font-size:13px;white-space:nowrap;-webkit-user-select:none;user-select:none;line-height:32px}.gallery-name-divider{width:1px;height:18px;background:var(--border);flex-shrink:0}.gallery-name-field .gallery-name-input{flex:1;background:none;border:none;outline:none;color:var(--text-primary);font-size:13px;font-family:inherit;padding:0 10px;height:32px}.sp-admin{display:flex;flex-direction:column;gap:0}.sp-admin-pw-row{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:8px;margin-bottom:8px;flex-wrap:wrap}.sp-admin-pw-row .sp-error{grid-column:1 / -1;margin:0}.sp-admin-username{font-size:.88em;font-weight:600;color:var(--text-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sp-admin-pw-input{max-width:140px}.sp-admin-pw-btn{padding:5px 12px;font-size:.82em;white-space:nowrap}.sp-admin-ok{font-size:.82em;color:var(--accent);margin-left:4px}.sp-admin-err{font-size:.82em;color:#f06060;margin-left:4px}.sp-signout-row{margin-top:24px;padding-top:16px;border-top:1px solid var(--border)}.sp-signout-btn{background:none;border:1px solid rgba(255,80,80,.35);border-radius:var(--radius);color:#ff6b6b;font-size:12px;font-family:inherit;padding:6px 14px;cursor:pointer;transition:background var(--t),border-color var(--t)}.sp-signout-btn:hover{background:#ff50501a;border-color:#ff505099}.sp-customize-divider{height:1px;background:var(--border);margin:8px 0}.sp-view-options{display:flex;flex-direction:column;gap:20px}.sp-view-section{display:flex;flex-direction:column;gap:8px}.sp-view-label{font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;margin:0}.sp-font-row{display:flex;align-items:center;gap:10px}.sp-font-slider{flex:1;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:4px;border-radius:2px;background:var(--surface-2);outline:none;cursor:pointer}.sp-font-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:14px;height:14px;border-radius:50%;background:var(--accent);cursor:pointer}.sp-font-slider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--accent);border:none;cursor:pointer}.sp-font-pct{width:40px;font-size:12px;color:var(--text-primary);background:var(--surface-2);border:1px solid var(--border);border-radius:4px;padding:2px 4px;text-align:center;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.sp-font-pct::-webkit-inner-spin-button,.sp-font-pct::-webkit-outer-spin-button{-webkit-appearance:none;-moz-appearance:none;appearance:none}.sp-font-unit{font-size:12px;color:var(--text-secondary)}.sp-font-reset{padding:3px 8px;font-size:11px}.sp-seg-ctrl{display:flex;border:1px solid var(--border);border-radius:6px;overflow:hidden}.sp-seg-btn{flex:1;background:none;border:none;color:var(--text-secondary);font-size:12px;font-family:inherit;padding:6px 10px;cursor:pointer;transition:color var(--t),background var(--t)}.sp-seg-btn+.sp-seg-btn{border-left:1px solid var(--border)}.sp-seg-btn.active{background:var(--accent-dim);color:var(--accent);font-weight:600}.sp-col-check-row{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text-secondary);cursor:pointer}.sp-col-check-row input[type=checkbox]{width:14px;height:14px;accent-color:var(--accent);cursor:pointer}
