:root{--bg-app:#f5f5f3;--bg-surface:#fff;--bg-elevated:#fafaf9;--bg-hover:#f0f0ee;--bg-active:#ebebea;--text-primary:#1a1a18;--text-muted:#5f5e5a;--text-faint:#888780;--text-whisper:#b4b2a9;--border:#0000001a;--border-subtle:#0000000f;--border-input:#00000026;--shadow-card:0 1px 3px #0000000d;--shadow-modal:0 8px 40px #0000002e;--overlay:#00000073;--accent:#378add;--accent-green:#3b6d11;--accent-green-bg:#eaf3de;--accent-green-border:#c0dd97;--accent-green-hover:#d4eab0;--topbar-bg:#2c2c2a;--topbar-border:#ffffff0f;--topbar-text:#b4b2a9;--topbar-pill-bg:#ffffff12;--thumb-bg:#e2e2de;--page-border:#00000038;--cat-health:#2a2a2a}html.dark{--bg-app:#111110;--bg-surface:#1a1a18;--bg-elevated:#212120;--bg-hover:#282826;--bg-active:#2f2f2d;--text-primary:#e5e3dc;--text-muted:#9c9a93;--text-faint:#6c6a64;--text-whisper:#484642;--border:#ffffff12;--border-subtle:#ffffff0a;--border-input:#ffffff1f;--shadow-card:0 1px 3px #0006;--shadow-modal:0 8px 40px #000000b3;--overlay:#000000b3;--accent:#5ba3eb;--accent-green:#6aaa2a;--accent-green-bg:#1a2e0a;--accent-green-border:#3a5c15;--accent-green-hover:#253f10;--topbar-bg:#0d0d0c;--topbar-border:#ffffff0f;--topbar-text:#6e6c66;--topbar-pill-bg:#ffffff0d;--thumb-bg:#2a2a28;--page-border:#ffffff24;--cat-health:#9a9a9a}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bg-app);height:100%;color:var(--text-primary);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:14px;overflow:hidden}.app{flex-direction:column;height:100dvh;display:flex;overflow:hidden}.topbar{background:var(--topbar-bg);border-bottom:.5px solid var(--topbar-border);z-index:10;flex-shrink:0;align-items:center;gap:8px;height:44px;padding:0 14px;display:flex}.topbar-brand{flex-shrink:0;align-items:baseline;gap:5px;display:flex}.topbar-logo{color:#fff;letter-spacing:-.01em;font-size:12px;font-weight:600}.topbar-by{color:#fff3;font-size:10px}.topbar-sep{background:var(--topbar-border);flex-shrink:0;width:.5px;height:16px;margin:0 2px}.topbar-actions{align-items:center;gap:6px;margin-left:auto;display:flex}.topbar-user{color:var(--topbar-text);align-items:center;gap:5px;padding-left:2px;font-size:11px;display:flex;position:relative}.topbar-user-btn{color:inherit;cursor:pointer;font:inherit;background:0 0;border:none;border-radius:6px;align-items:center;gap:6px;margin:0;padding:4px 8px;transition:background .15s,color .15s;display:inline-flex}.topbar-user-icon{opacity:.7;flex:none}.topbar-user-name{white-space:nowrap}.topbar-user-caret{opacity:.45;flex:none;margin-left:2px;transition:transform .15s}.topbar-user.open .topbar-user-caret{transform:rotate(180deg)}.topbar-user-menu{background:var(--bg-surface);border:.5px solid var(--border);box-shadow:var(--shadow-modal);z-index:90;border-radius:8px;flex-direction:column;align-items:flex-start;gap:6px;min-width:160px;padding:10px 12px;display:none;position:absolute;top:calc(100% + 4px);right:0}.topbar-user.open .topbar-user-menu{display:flex}.topbar-user-menu-name{color:var(--text);font-size:12px;font-weight:600}.topbar-user-menu-link{color:var(--text);box-sizing:border-box;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:6px;width:100%;margin-top:4px;padding:6px 8px;font-family:inherit;font-size:12px;text-decoration:none;transition:background .12s;display:block}.topbar-user-menu-link:hover,.topbar-user-menu-link:focus-visible{background:var(--bg-hover);outline:none}.topbar-user-btn:hover,.topbar-user.open .topbar-user-btn{color:#fff;background:#ffffff14}.topbar-user-btn:hover .topbar-user-icon,.topbar-user.open .topbar-user-btn .topbar-user-icon,.topbar-user-btn:hover .topbar-user-caret,.topbar-user.open .topbar-user-btn .topbar-user-caret{opacity:1}.topbar-role-pill{background:var(--topbar-pill-bg);color:#ffffff4d;white-space:nowrap;border:.5px solid #ffffff12;border-radius:10px;padding:2px 7px;font-size:9px}.icon-btn{color:var(--topbar-text);cursor:pointer;white-space:nowrap;background:0 0;border:.5px solid #ffffff1a;border-radius:6px;align-items:center;gap:4px;padding:4px 9px;font-family:inherit;font-size:11px;font-weight:500;line-height:1.4;transition:background .15s,color .15s;display:flex}.icon-btn:hover{color:#fff;background:#ffffff14}.body-row{flex:1;display:flex;overflow:hidden}.sidebar{background:var(--bg-surface);border-right:.5px solid var(--border);flex-direction:column;flex-shrink:0;width:220px;min-width:220px;transition:width .2s,min-width .2s,border-right-width .2s;display:flex;overflow:hidden}body.sidebar-collapsed .sidebar{border-right-width:0;width:0;min-width:0}.sidebar-toggle{margin-right:4px}body.sidebar-collapsed .sidebar-toggle{color:var(--accent)}.sidebar-backdrop{display:none}.audit-log-modal{width:640px;max-width:96vw;max-height:82vh}.audit-log-body{flex:1;min-height:0;padding:8px 4px 12px;overflow-y:auto}.audit-log-body .log-entry{border-bottom:.5px solid var(--border-subtle);color:var(--text-primary);padding:7px 16px;font-size:12px;line-height:1.5}.audit-log-body .log-entry:last-child{border-bottom:0}.audit-log-body .log-ts{color:var(--text-faint);font-variant-numeric:tabular-nums;margin-right:6px;font-size:11px}.audit-log-body .log-user{color:var(--accent);margin-right:6px;font-size:11px;font-weight:500}.audit-log-body .log-page{background:var(--bg-app);border:.5px solid var(--border);color:var(--text-muted);font-variant-numeric:tabular-nums;border-radius:3px;margin-right:6px;padding:1px 6px;font-size:10px;display:inline-block}.audit-log-body .empty-hint{padding:30px 16px}.sidebar-header{border-bottom:.5px solid var(--border);flex-direction:column;flex-shrink:0;justify-content:center;gap:5px;min-height:46px;padding:8px 14px;display:flex}.sidebar-header h2{color:var(--text-faint);text-transform:uppercase;letter-spacing:.07em;font-size:10px;font-weight:500}.loc-filter{color:var(--text-faint);border:.5px solid var(--border);background:var(--bg-app);cursor:pointer;appearance:auto;border-radius:5px;width:100%;padding:3px 6px;font-family:inherit;font-size:10px}.loc-filter:focus{border-color:var(--accent);outline:none}.pub-list{flex:1;padding:6px;overflow-y:auto}.pub-item{cursor:pointer;border:.5px solid #0000;border-radius:7px;margin-bottom:1px;padding:9px 10px;font-size:12px;transition:background .1s}.pub-item:hover{background:var(--bg-hover)}.pub-item.active{background:var(--bg-app);border-color:var(--border)}.pub-item-title{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;margin-bottom:2px;font-weight:500;overflow:hidden}.pub-sub{color:var(--text-faint);margin-top:1px;font-size:10px}.sidebar-footer{border-top:.5px solid var(--border);flex-shrink:0;padding:10px}.sidebar-version{text-align:center;letter-spacing:.04em;color:var(--text-whisper);font-variant-numeric:tabular-nums;-webkit-user-select:none;user-select:none;margin-top:8px;font-size:9px}.sidebar-footer:has(>.sidebar-version:only-child) .sidebar-version{margin-top:0}a.sidebar-version{text-decoration:none;display:block}a.sidebar-version:hover{color:var(--text-faint)}.sidebar-dev-pill{letter-spacing:.06em;text-transform:uppercase;color:#8a5a00;white-space:nowrap;text-overflow:ellipsis;-webkit-user-select:none;user-select:none;background:#fff6df;border:1px dashed #e8b84a;border-radius:999px;justify-content:center;align-items:center;gap:5px;width:fit-content;max-width:100%;margin:6px auto 0;padding:3px 8px;font-size:9px;font-weight:600;display:inline-flex;overflow:hidden}.sidebar-footer{flex-direction:column;align-items:stretch;display:flex}.sidebar-footer>.sidebar-dev-pill{align-self:center}.sidebar-dev-dot{background:#e8b84a;border-radius:50%;flex-shrink:0;width:6px;height:6px}.sidebar-dev-host{letter-spacing:.02em;text-transform:none;color:#a87a1a;font-weight:400}html.dark .sidebar-dev-pill{color:#f3cf7a;background:#e8b84a14;border-color:#e8b84a8c}html.dark .sidebar-dev-host{color:#d6b166}.btn-new{background:var(--accent-green-bg);width:100%;color:var(--accent-green);border:.5px solid var(--accent-green-border);cursor:pointer;border-radius:7px;padding:8px;font-family:inherit;font-size:12px;font-weight:500;transition:background .15s}.btn-new:hover{background:var(--accent-green-hover)}.btn-new:disabled{opacity:.35;cursor:not-allowed;background:var(--bg-hover);color:var(--text-faint);border-color:var(--border)}.main{flex-direction:column;flex:1;min-width:0;display:flex;overflow:hidden}.toolbar{background:var(--bg-surface);border-bottom:.5px solid var(--border);flex-shrink:0;align-items:center;gap:8px;min-height:46px;padding:8px 18px;display:flex}.pub-title{white-space:nowrap;text-overflow:ellipsis;min-width:0;color:var(--text-primary);flex:1;font-size:13px;font-weight:500;overflow:hidden}.pub-subtitle{color:var(--text-faint);margin-left:5px;font-size:11px;font-weight:400}.lock-badge{vertical-align:baseline;font-size:.85em}.empty-title-hint{color:var(--text-faint);font-weight:400}.tbtn{border:.5px solid var(--border-input);cursor:pointer;background:var(--bg-surface);color:var(--text-primary);white-space:nowrap;border-radius:7px;padding:6px 12px;font-family:inherit;font-size:11px;font-weight:500;transition:background .15s}.tbtn:hover{background:var(--bg-hover)}.tbtn.green{background:var(--accent-green-bg);color:var(--accent-green);border-color:var(--accent-green-border)}.tbtn.green:hover{background:var(--accent-green-hover)}.tbtn:disabled{opacity:.3;cursor:not-allowed}.tbtn:disabled:hover{background:var(--bg-surface)}.toolbar-actions{align-items:center;gap:6px;display:flex}.toolbar-menu-btn{padding:6px 10px;font-size:16px;line-height:1;display:none}.toolbar-search-btn{padding:6px 9px;line-height:0;display:none}.toolbar-search-btn.active{color:var(--accent)}.search-bar{background:var(--bg-surface);border-bottom:.5px solid var(--border);flex-wrap:wrap;flex-shrink:0;align-items:center;gap:8px;padding:7px 18px;display:flex}.search-input-wrap{flex:220px;align-items:center;min-width:150px;display:flex;position:relative}.search-icon{opacity:.5;pointer-events:none;font-size:11px;position:absolute;left:9px}.search-input{width:100%;color:var(--text-primary);background:var(--bg-app);border:.5px solid var(--border-input);border-radius:7px;padding:6px 26px 6px 28px;font-family:inherit;font-size:12px}.search-input:focus{border-color:var(--accent);outline:none}.search-clear{cursor:pointer;color:var(--text-faint);background:0 0;border:none;padding:2px 4px;font-size:15px;line-height:1;position:absolute;right:6px}.search-clear:hover{color:var(--text-primary)}.search-facets{flex-wrap:wrap;gap:6px;display:flex}.search-facet{color:var(--text-primary);border:.5px solid var(--border-input);background:var(--bg-app);cursor:pointer;border-radius:6px;max-width:150px;padding:5px 6px;font-family:inherit;font-size:11px}.search-facet:focus{border-color:var(--accent);outline:none}.search-mode-toggle{border:.5px solid var(--border-input);border-radius:7px;flex-shrink:0;display:flex;overflow:hidden}.search-mode-btn{background:var(--bg-surface);border:none;border-left:.5px solid var(--border-input);cursor:pointer;color:var(--text-faint);padding:5px 11px;font-family:inherit;font-size:11px;font-weight:500;transition:background .12s,color .12s}.search-mode-btn:first-child{border-left:none}.search-mode-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.search-mode-btn.active{background:var(--bg-active);color:var(--text-primary)}.search-reset{color:#b0681a;background:0 0;border-color:#c88c2866}.search-reset:hover{background:#c88c281a}html.dark .search-reset{color:#e0a030;border-color:#e0a03066}.search-count{color:var(--text-faint);white-space:nowrap;font-size:11px}.search-jump-nav{flex-shrink:0;align-items:center;gap:4px;display:flex}.search-nav-btn{background:var(--bg-surface);border:.5px solid var(--border-input);cursor:pointer;color:var(--text-primary);border-radius:6px;padding:3px 9px;font-family:inherit;font-size:15px;line-height:1;transition:background .12s,color .12s}.search-nav-btn:hover{background:var(--bg-hover)}.search-nav-btn:disabled{opacity:.35;cursor:default}.search-nav-btn:disabled:hover{background:var(--bg-surface)}.search-jump-pos{color:var(--text-faint);white-space:nowrap;text-align:center;min-width:38px;font-size:11px}.search-hidden{display:none!important}.page-half.search-hit,.list-row.search-hit{outline:2px solid var(--accent);outline-offset:-2px;border-radius:7px}.page-half.search-current,.list-row.search-current{outline-offset:-3px;z-index:3;border-radius:7px;outline:3px solid #e8a317;position:relative}.page-half.search-current .thumb:after,.list-row.search-current .list-thumb:after{content:"";pointer-events:none;z-index:5;background:#e8a31738;position:absolute;inset:0}.search-goto{flex-shrink:0;align-items:center;gap:6px;margin-left:auto;display:flex}.search-goto-label{color:var(--text-faint);white-space:nowrap;font-size:11px}.search-goto-input{width:58px;color:var(--text-primary);background:var(--bg-app);border:.5px solid var(--border-input);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;border-radius:6px;padding:5px 6px;font-family:inherit;font-size:12px}html.dark .search-goto-input{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}.search-goto-input:focus{border-color:var(--accent);outline:none}.page-flash .thumb:after{content:"";pointer-events:none;z-index:6;background:#e8a31780;animation:1.2s ease-out forwards pageFlash;position:absolute;inset:0}@keyframes pageFlash{0%{opacity:1}to{opacity:0}}.flatplan{flex:1;padding:18px;overflow-y:auto}.empty-hint{text-align:center;color:var(--text-whisper);padding:60px 40px;font-size:12px}.section-tag{color:var(--text-faint);text-transform:uppercase;letter-spacing:.07em;align-items:center;gap:8px;padding:0 0 10px;font-size:10px;font-weight:500;display:flex}.section-tag:after{content:"";background:var(--border);flex:1;height:.5px}.section-tag-hint{text-transform:none;letter-spacing:0;color:var(--text-whisper);font-size:9px;font-weight:400}.spreads-grid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px;margin-bottom:22px;display:grid;position:relative}.singles-grid{grid-template-columns:repeat(auto-fill,minmax(90px,140px));gap:12px;margin-bottom:22px;display:grid}.spread-unit,.single-unit{border:.5px solid var(--page-border);background:var(--bg-surface);width:100%;box-shadow:var(--shadow-card);border-radius:7px;display:flex;overflow:hidden}.spread-unit{position:relative}.spread-badge{background:var(--accent);color:#fff;pointer-events:none;z-index:2;width:16px;height:16px;box-shadow:0 0 0 2px var(--bg-surface);border-radius:50%;justify-content:center;align-items:center;font-size:8px;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.spread-drop-indicator{background:var(--accent);pointer-events:none;opacity:0;z-index:4;width:3px;box-shadow:0 0 0 1px var(--bg-surface);border-radius:2px;transition:opacity .1s,left 80ms,top 80ms,height 80ms;position:absolute}.spread-drop-indicator.active{opacity:1}.insert-gap-bar{background:var(--accent);pointer-events:none;opacity:0;z-index:5;width:3px;box-shadow:0 0 0 1px var(--bg-surface);border-radius:2px;transition:opacity .1s,left 80ms,top 80ms,height 80ms;position:absolute}.insert-gap-bar.active{opacity:1}.insert-gap-plus{background:var(--accent);color:#fff;cursor:pointer;pointer-events:auto;width:22px;height:22px;box-shadow:0 0 0 2px var(--bg-surface), var(--shadow-card);border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;font-size:15px;line-height:1;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.insert-gap-plus:hover{filter:brightness(1.12)}.insert-gap-target{border:1.5px dashed var(--accent);cursor:pointer;z-index:5;background:#4d9ed81f;border-radius:5px;justify-content:center;align-items:center;width:26px;transition:background .1s;display:flex;position:absolute}.insert-gap-target:hover{background:#4d9ed842}.insert-gap-target:after{content:"+";color:var(--accent);font-size:16px;font-weight:600;line-height:1}.spreads-grid.empty-interior{min-height:116px}.insert-gap-target.full{width:auto;height:auto;color:var(--accent);gap:6px;font-size:11px;font-weight:500;inset:0}.insert-gap-target.full:after{content:none}body.insert-mode .spread-move-handle{display:none}body.insert-mode .page-half{cursor:default}body.insert-mode .page-half:not(.swap-target):hover .page-card-inner{background:var(--bg-surface)}@media (hover:none){.insert-gap-plus{width:28px;height:28px;font-size:18px}.insert-gap-target{width:34px}.insert-gap-target.full{width:auto}}.spread-unit:has(.spread-move-handle){padding-bottom:16px}.spread-unit.dragging{opacity:.22}.spread-move-handle{cursor:grab;height:16px;color:var(--text-muted);opacity:0;z-index:3;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;letter-spacing:2px;touch-action:pan-y pinch-zoom;background:linear-gradient(#0000,#0000000f);justify-content:center;align-items:center;font-size:11px;transition:opacity .15s;display:flex;position:absolute;bottom:0;left:0;right:0}@media (hover:none){.spread-move-handle{opacity:.7;height:22px;font-size:13px}}.spread-unit:hover .spread-move-handle{opacity:1}.spread-move-handle:active{cursor:grabbing}.page-half{cursor:pointer;flex-direction:column;flex:1;min-width:0;display:flex;position:relative}.page-half.draggable{cursor:grab;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;touch-action:pan-y pinch-zoom}.page-half.draggable img{-webkit-touch-callout:none;pointer-events:none}.page-half.draggable:active{cursor:grabbing}.page-half+.page-half{border-left:.5px solid var(--page-border)}.page-half.dragging{opacity:.22}.page-half.swap-target .page-footer{background:var(--accent);color:#fff}.page-half.swap-target .page-footer .page-label,.page-half.swap-target .page-footer .page-date{color:#fff}.page-card-inner{background:var(--bg-surface);transition:background .1s}.page-half:not(.swap-target):hover .page-card-inner{background:var(--bg-hover)}.page-half:not(.blank-slot):after{content:"";flex:auto;min-height:0}.blank-slot .page-card-inner{flex:1}.thumb{aspect-ratio:1330/1838;background:var(--thumb-bg);width:100%;position:relative;overflow:hidden}.thumb img{object-fit:cover;pointer-events:none;width:100%;height:100%;display:block}.thumb-empty{width:100%;height:100%;color:var(--text-whisper);text-align:center;box-sizing:border-box;justify-content:center;align-items:center;padding:6px;font-size:8px;display:flex}.thumb .zone{box-sizing:border-box;position:absolute;overflow:hidden}.thumb .zone+.zone{outline-offset:-.5px;outline:.5px dashed #ffffff4d}html.dark .thumb .zone+.zone{outline-color:#00000059}.thumb.layout-full .zone{inset:0}.thumb.layout-halves .zone-top{height:50%;top:0;left:0;right:0}.thumb.layout-halves .zone-bottom{height:50%;bottom:0;left:0;right:0}.thumb.layout-third_inner.hand-left .zone-outer{width:33.333%;top:0;bottom:0;left:0}.thumb.layout-third_inner.hand-left .zone-inner{inset:0 0 0 33.333%}.thumb.layout-third_inner.hand-right .zone-outer{width:33.333%;top:0;bottom:0;right:0}.thumb.layout-third_inner.hand-right .zone-inner{inset:0 33.333% 0 0}.thumb.layout-third_split.hand-left .zone-outer{width:33.333%;top:0;bottom:0;left:0}.thumb.layout-third_split.hand-left .zone-inner_top{height:50%;top:0;left:33.333%;right:0}.thumb.layout-third_split.hand-left .zone-inner_bottom{height:50%;bottom:0;left:33.333%;right:0}.thumb.layout-third_split.hand-right .zone-outer{width:33.333%;top:0;bottom:0;right:0}.thumb.layout-third_split.hand-right .zone-inner_top{height:50%;top:0;left:0;right:33.333%}.thumb.layout-third_split.hand-right .zone-inner_bottom{height:50%;bottom:0;left:0;right:33.333%}.thumb.layout-half_top_quarters .zone-top{height:50%;top:0;left:0;right:0}.thumb.layout-half_top_quarters .zone-bottom_left{width:50%;height:50%;bottom:0;left:0}.thumb.layout-half_top_quarters .zone-bottom_right{width:50%;height:50%;bottom:0;right:0}.thumb.layout-quarters_top_half .zone-top_left{width:50%;height:50%;top:0;left:0}.thumb.layout-quarters_top_half .zone-top_right{width:50%;height:50%;top:0;right:0}.thumb.layout-quarters_top_half .zone-bottom{height:50%;bottom:0;left:0;right:0}.thumb.layout-quarters .zone-top_left{width:50%;height:50%;top:0;left:0}.thumb.layout-quarters .zone-top_right{width:50%;height:50%;top:0;right:0}.thumb.layout-quarters .zone-bottom_left{width:50%;height:50%;bottom:0;left:0}.thumb.layout-quarters .zone-bottom_right{width:50%;height:50%;bottom:0;right:0}.thumb.layout-third_inner.hand-right .zone-inner>picture>img,.thumb.layout-third_inner.hand-right .zone-inner>img,.thumb.layout-third_split.hand-right .zone-inner_top>picture>img,.thumb.layout-third_split.hand-right .zone-inner_top>img,.thumb.layout-third_split.hand-right .zone-inner_bottom>picture>img,.thumb.layout-third_split.hand-right .zone-inner_bottom>img{object-position:left center}.thumb.layout-third_inner.hand-left .zone-inner>picture>img,.thumb.layout-third_inner.hand-left .zone-inner>img,.thumb.layout-third_split.hand-left .zone-inner_top>picture>img,.thumb.layout-third_split.hand-left .zone-inner_top>img,.thumb.layout-third_split.hand-left .zone-inner_bottom>picture>img,.thumb.layout-third_split.hand-left .zone-inner_bottom>img{object-position:right center}.thumb .zone.drop-hover{outline:2px dashed var(--accent);outline-offset:-2px;background:var(--bg-hover)}body.slot-swap-mode .page-half.draggable{cursor:default}body.slot-swap-mode .spread-move-handle{display:none}.thumb .zone.slot-draggable{cursor:grab}.thumb .zone.slot-draggable:active{cursor:grabbing}body.slot-swap-mode .thumb .zone.slot-draggable:after{content:"";pointer-events:none;border:1.5px dashed #4d9ed8d9;border-radius:4px;position:absolute;inset:3px}.thumb .zone.slot-dragging{opacity:.35}.thumb .zone.slot-drop-ok{outline-offset:-2px;background:#4a9f401f;outline:2.5px solid #4a9f40}.thumb .zone.slot-drop-bad{outline-offset:-2px;outline:2px dashed #d14845}.tbtn.active{background:var(--accent);color:#fff;border-color:var(--accent)}.page-num-badge{color:#fff;pointer-events:none;background:#00000085;border-radius:6px;padding:2px 5px;font-size:9px;font-weight:500;line-height:1.3;position:absolute;top:4px;left:4px}.status-pip{pointer-events:none;border-radius:50%;width:7px;height:7px;position:absolute;top:4px;right:4px}.lock-icon{opacity:.32;pointer-events:none;font-size:10px;position:absolute;bottom:4px;right:4px}.page-footer>.card-chips{flex-wrap:wrap;margin:4px 0 2px}.card-chips{flex-shrink:0;gap:3px;display:flex}.card-chip{color:#fff;letter-spacing:.02em;white-space:nowrap;pointer-events:none;border-radius:3px;padding:1px 5px;font-size:8px;font-weight:600;line-height:1.35}.thumb-empty{color:var(--text-whisper);font-size:9px;transition:background .12s,outline .12s}.thumb-empty.drop-hover{outline:2px dashed var(--accent);outline-offset:-4px;color:var(--accent);background:var(--bg-hover)!important}.page-footer{border-top:.5px solid var(--border-subtle);background:var(--bg-surface);flex-shrink:0;padding:5px 7px 6px}.page-label{color:var(--text-primary);word-break:break-word;font-size:10px;font-weight:500;line-height:1.35}.page-date{color:var(--text-whisper);margin-top:1px;font-size:9px}.export-busy{background:var(--overlay);z-index:400;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.export-busy[hidden]{display:none}.export-busy-card{background:var(--bg-surface);border:.5px solid var(--border);box-shadow:var(--shadow-modal);border-radius:12px;align-items:center;gap:14px;max-width:80vw;padding:22px 28px;display:flex}.export-busy-spinner{border:2.5px solid var(--border);border-top-color:var(--text);border-radius:50%;flex-shrink:0;width:22px;height:22px;animation:.7s linear infinite exportSpin}.export-busy-text{color:var(--text);font-size:13px}@keyframes exportSpin{to{transform:rotate(360deg)}}.busy-card{min-width:280px}.busy-body{flex-direction:column;flex:1;gap:9px;min-width:0;display:flex}.busy-card .export-busy-text{text-overflow:ellipsis;white-space:nowrap;max-width:44ch;overflow:hidden}.busy-bar{background:var(--bg-hover);border-radius:2px;height:4px;overflow:hidden}.busy-bar[hidden]{display:none}.busy-fill{background:var(--accent);border-radius:2px;width:0%;height:100%;transition:width .15s ease-out}.modal-wrap{background:var(--overlay);z-index:200;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.pdf-lightbox{background:var(--bg-surface);box-shadow:var(--shadow-modal);border-radius:12px;flex-direction:column;width:90vw;max-width:1100px;height:92dvh;display:flex;overflow:hidden}.pdf-lightbox iframe{border:none;flex:1;width:100%;display:block}.modal.pdf-page-picker{width:1040px}.modal-body.pp-body{min-height:0;padding:16px 18px;display:block;overflow-y:auto}.pp-grid{outline:none;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px;display:grid}.pp-cell{border:1px solid var(--border);background:var(--bg-app);cursor:pointer;border-radius:6px;flex-direction:column;align-items:center;gap:6px;padding:8px 8px 6px;transition:border-color .12s,box-shadow .12s;display:flex;overflow:hidden}.pp-cell:hover{border-color:var(--accent)}.pp-cell.selected{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}@keyframes ppSkeleton{0%,to{opacity:1}50%{opacity:.45}}.pp-cell-img:empty{animation:1.2s ease-in-out infinite ppSkeleton}@media (prefers-reduced-motion:reduce){.pp-cell-img:empty{animation:none}}.pp-cell-img{aspect-ratio:1/1.414;background:var(--bg-hover);border-radius:3px;justify-content:center;align-items:center;width:100%;display:flex;overflow:hidden}.pp-cell-img img{object-fit:contain;background:#fff;width:100%;height:100%;display:block}.pp-cell-num{color:var(--text-muted);font-size:11px;line-height:1}.pp-cell.selected .pp-cell-num{color:var(--accent);font-weight:500}.pp-cell-err .pp-cell-img{color:var(--text-whisper);font-size:16px}.pp-foot{border-top:.5px solid var(--border);flex-shrink:0;align-items:center;gap:10px;padding:12px 18px;display:flex}.pp-hint{color:var(--text-whisper);flex:1;font-size:11px}.modal{background:var(--bg-surface);border:.5px solid var(--border);width:900px;max-width:96vw;max-height:92dvh;box-shadow:var(--shadow-modal);border-radius:12px;flex-direction:column;display:flex;overflow:hidden}.modal-head{border-bottom:.5px solid var(--border);flex-shrink:0;align-items:center;gap:10px;padding:13px 18px;display:flex}.modal-num{background:var(--bg-app);border:.5px solid var(--border);color:var(--text-muted);border-radius:14px;flex-shrink:0;padding:2px 10px;font-size:11px;font-weight:500}.modal-title-text{color:var(--text-primary);flex:1;font-size:14px;font-weight:500}.modal-x{cursor:pointer;color:var(--text-faint);background:0 0;border:none;flex-shrink:0;padding:2px 6px;font-family:inherit;font-size:20px;line-height:1}.modal-x:hover{color:var(--text-primary)}.modal-body{flex:1;min-height:0;display:flex;overflow:hidden}.modal-l{border-right:.5px solid var(--border);background:var(--bg-elevated);flex-direction:column;flex-shrink:0;gap:10px;width:230px;min-width:230px;padding:14px;display:flex;overflow-y:auto}.modal-thumb-lg{aspect-ratio:1330/1838;background:var(--bg-app);border:.5px solid var(--border);border-radius:7px;flex-shrink:0;width:100%;position:relative;overflow:hidden}.modal-thumb-lg.thumb img{object-fit:cover;width:100%;height:100%;display:block}.modal-thumb-lg .thumb-empty{color:var(--text-faint);text-align:center;pointer-events:none;justify-content:center;align-items:center;width:100%;height:100%;padding:0 8px;font-size:11px;display:flex}.modal-thumb-lg .zone:has(.thumb-empty){cursor:pointer}.modal-thumb-lg .zone:has(.thumb-empty):hover{background:var(--bg-hover)}.modal-thumb-lg .zone:has(.thumb-empty):active{background:var(--bg-active)}.modal-thumb-empty{width:100%;height:100%;color:var(--text-faint);justify-content:center;align-items:center;font-size:11px;display:flex}.modal-r{flex:1;min-width:0;padding:14px 18px;overflow-y:auto}.modal-meta{border-left:.5px solid var(--border);background:var(--bg-elevated);flex-direction:column;flex-shrink:0;gap:18px;width:200px;min-width:200px;padding:14px 14px 14px 12px;display:flex;overflow-y:auto}.meta-group{align-items:flex-start;gap:10px;display:flex}.meta-group-lbl{color:var(--text-faint);text-transform:uppercase;letter-spacing:.05em;flex-shrink:0;width:62px;padding-top:6px;font-size:9px;font-weight:500}.meta-chips{flex-direction:column;flex:1;gap:5px;min-width:0;display:flex}.meta-chip{color:#fff;background:var(--chip-bg,#666);cursor:pointer;-webkit-user-select:none;user-select:none;opacity:.32;letter-spacing:.01em;border:1px solid #0000;border-radius:4px;justify-content:flex-start;align-items:center;padding:4px 10px;font-size:11px;font-weight:500;transition:opacity .12s,transform 80ms;display:inline-flex}.meta-chip:hover{opacity:.7}.meta-chip.selected,.meta-chip.selected:hover{opacity:1}.meta-chip.readonly{cursor:default}.meta-chip.readonly:hover{opacity:.32}.meta-chip.readonly.selected:hover{opacity:1}.meta-group-col{flex-direction:column;align-items:stretch;gap:8px}.meta-group-lbl-top{width:auto;padding-top:0}.layout-picker{grid-template-columns:repeat(2,1fr);gap:8px;display:grid}.layout-tile{aspect-ratio:38/52;background:var(--bg-surface);border:.5px solid var(--border);cursor:pointer;color:var(--text-muted);border-radius:5px;justify-content:center;align-items:center;padding:4px;transition:border-color .1s,color .1s,background .1s;display:flex}.layout-tile svg{width:100%;height:100%}.layout-tile:hover{color:var(--text-primary);background:var(--bg-hover)}.layout-tile.selected{border-color:var(--accent);color:var(--accent);background:var(--bg-surface)}.layout-tile.readonly{cursor:default}.layout-tile.readonly:hover{color:var(--text-muted);background:var(--bg-surface)}.info-grid-slim{grid-template-columns:1fr!important}.zone-block{border:.5px solid var(--border);background:var(--bg-app);border-radius:7px;margin-bottom:14px;padding:12px 14px 6px}.zone-block-head{text-transform:uppercase;letter-spacing:.06em;color:var(--accent);margin-bottom:10px;font-size:11px;font-weight:600}.zone-block .info-grid{margin-bottom:10px;padding-bottom:10px}.zone-block .ef-row:last-child{margin-bottom:8px}.zone-status-grid{grid-template-columns:1fr 1fr 1fr}.info-grid{border-bottom:.5px solid var(--border-subtle);grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:14px;padding-bottom:14px;display:grid}.info-cell .lbl{color:var(--text-faint);text-transform:uppercase;letter-spacing:.04em;margin-bottom:3px;font-size:9px;font-weight:500}.info-cell .val{color:var(--text-primary);font-size:12px}.field-blk{margin-bottom:12px}.field-blk .lbl{color:var(--text-faint);margin-bottom:3px;font-size:10px;font-weight:500}.field-blk .val{color:var(--text-primary);font-size:12px;line-height:1.5}.file-row{align-items:center;gap:8px;display:flex}.file-link{color:var(--accent);cursor:pointer;background:0 0;border:none;padding:0;font-family:inherit;font-size:12px;text-decoration:underline}.file-link.pp-open{color:var(--text-muted);border-bottom:1px dotted var(--border);white-space:nowrap;margin-left:auto;text-decoration:none}.file-link.pp-open:hover{color:var(--accent);border-bottom-color:var(--accent)}.file-zone-tag{background:var(--bg-surface);color:var(--text-muted);border:.5px solid var(--border);text-transform:uppercase;letter-spacing:.03em;border-radius:3px;margin-right:2px;padding:1px 5px;font-size:9px;font-weight:600;text-decoration:none}.spread-val{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.spread-linked-lbl{color:var(--accent);font-size:12px;font-weight:500}.btn-link-spread{cursor:pointer;border:.5px solid var(--accent);color:var(--accent);background:0 0;border-radius:6px;padding:4px 10px;font-family:inherit;font-size:11px}.btn-link-spread:hover{background:#378add14}.btn-unlink-spread{cursor:pointer;border:.5px solid var(--border-input);color:var(--text-muted);background:0 0;border-radius:6px;padding:4px 10px;font-family:inherit;font-size:11px}.btn-unlink-spread:hover{background:var(--bg-hover)}.file-sz{color:var(--text-faint);font-size:10px}.act-row{border-top:.5px solid var(--border-subtle);flex-wrap:wrap;gap:8px;margin-top:14px;padding-top:14px;display:flex}.btn-edit{background:var(--accent-green);color:#fff;cursor:pointer;border:none;border-radius:7px;padding:7px 16px;font-family:inherit;font-size:11px;font-weight:500}.btn-edit:hover{opacity:.88}.btn-log{background:var(--bg-app);border:.5px solid var(--border);cursor:pointer;color:var(--text-primary);border-radius:7px;padding:7px 16px;font-family:inherit;font-size:11px}.btn-log:hover{background:var(--bg-hover)}.btn-delete{cursor:pointer;color:#c0392b;background:0 0;border:.5px solid #dc32324d;border-radius:7px;padding:7px 16px;font-family:inherit;font-size:11px}.btn-delete:hover{background:#dc323212}html.dark .btn-delete{color:#e57373;border-color:#dc50504d}.btn-clear{cursor:pointer;color:#b0681a;background:0 0;border:.5px solid #c88c284d;border-radius:7px;margin-left:auto;padding:7px 16px;font-family:inherit;font-size:11px}.btn-clear:hover{background:#c88c2814}html.dark .btn-clear{color:#e0a030;border-color:#e0a0304d}.log-area{border-top:.5px solid var(--border-subtle);margin-top:14px;padding-top:14px}.log-hd{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:8px;font-size:10px;font-weight:500}.log-entry{color:var(--text-muted);border-bottom:.5px solid var(--border-subtle);margin-bottom:8px;padding-bottom:8px;font-size:11px;line-height:1.6}.log-entry:last-child{border-bottom:none;margin-bottom:0}.log-ts{color:var(--text-primary);font-weight:500}.read-only-notice{color:var(--text-faint);background:var(--bg-app);border:.5px solid var(--border);border-radius:7px;margin-top:12px;padding:10px 12px;font-size:11px}.edit-form{flex-direction:column;gap:11px;display:flex}.ef-row{flex-direction:column;gap:3px;display:flex}.ef-lbl{color:var(--text-muted);font-size:10px;font-weight:500}.ef-input,.ef-select,.ef-ta{border:.5px solid var(--border-input);background:var(--bg-surface);color:var(--text-primary);appearance:auto;border-radius:7px;width:100%;padding:7px 10px;font-family:inherit;font-size:12px}.ef-input:focus,.ef-select:focus,.ef-ta:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 2px #378add1f}.ef-ta{resize:vertical;min-height:52px}.upload-zone{border:.5px dashed var(--border-input);text-align:center;color:var(--text-faint);cursor:pointer;background:var(--bg-app);border-radius:7px;padding:14px;font-size:11px;transition:background .15s,border-color .15s}.upload-zone:hover{border-color:var(--accent);color:var(--accent)}.upload-zone.dragover{background:var(--bg-hover);border-color:var(--accent)}.upload-zone.hint-only{cursor:default;pointer-events:none;opacity:.7}.upload-zone.hint-only:hover{border-color:var(--border-input);color:var(--text-faint)}.ef-actions{border-top:.5px solid var(--border-subtle);flex-wrap:wrap;gap:8px;margin-top:2px;padding-top:10px;display:flex}.btn-save{background:var(--accent-green);color:#fff;cursor:pointer;border:none;border-radius:7px;padding:8px 16px;font-family:inherit;font-size:11px;font-weight:500}.btn-save:hover{opacity:.88}.btn-cancel{background:var(--bg-app);border:.5px solid var(--border);cursor:pointer;color:var(--text-primary);border-radius:7px;padding:8px 16px;font-family:inherit;font-size:11px}.btn-cancel:hover{background:var(--bg-hover)}.toast{color:#fff;opacity:0;z-index:999;pointer-events:none;white-space:nowrap;background:#1a1a18;border:.5px solid #ffffff14;border-radius:18px;padding:8px 18px;font-size:11px;transition:opacity .2s;position:fixed;bottom:22px;left:50%;transform:translate(-50%)}.toast.show{opacity:1}.blank-slot{opacity:.35;cursor:default}.blank-slot.addable{opacity:.5;cursor:pointer}.blank-slot.addable:hover{opacity:.85}.blank-slot.addable:hover .page-card-inner{background:var(--bg-hover)}.blank-slot .page-card-inner{border-left:.5px dashed var(--border)!important}.blank-slot-inner{flex-direction:column;justify-content:center;align-items:center;gap:6px;width:100%;height:100%;display:flex}.blank-slot-plus{color:var(--text-whisper);font-size:28px;line-height:1}.blank-slot.addable:hover .blank-slot-plus{color:var(--accent)}.blank-slot-label{color:var(--text-whisper);font-size:10px}.blank-slot.addable:hover .blank-slot-label{color:var(--accent)}.view-btns{border:.5px solid var(--border-input);border-radius:7px;flex-shrink:0;display:flex;overflow:hidden}.view-btn{background:var(--bg-surface);border:none;border-left:.5px solid var(--border-input);cursor:pointer;color:var(--text-faint);align-items:center;padding:5px 9px;font-family:inherit;transition:background .12s,color .12s;display:flex}.view-btn:first-child{border-left:none}.view-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.view-btn.active{background:var(--bg-active);color:var(--text-primary)}.flatplan.view-large .spreads-grid{grid-template-columns:repeat(auto-fill,minmax(380px,1fr))}.flatplan.view-large .singles-grid{grid-template-columns:repeat(auto-fill,minmax(180px,280px))}.flatplan.view-xl .spreads-grid{grid-template-columns:repeat(auto-fill,minmax(525px,1fr))}.flatplan.view-xl .singles-grid{grid-template-columns:repeat(auto-fill,minmax(245px,1fr))}.list-row{cursor:pointer;border-radius:7px;gap:20px;margin:0 -10px 4px;padding:10px;transition:background .1s;display:flex}.list-row:hover{background:var(--bg-hover)}.list-thumb{aspect-ratio:1330/1838;background:var(--thumb-bg);border:.5px solid var(--page-border);border-radius:5px;flex-shrink:0;width:190px;min-width:190px;position:relative;overflow:hidden}.list-thumb img{object-fit:cover;width:100%;height:100%;display:block}.list-thumb .thumb-empty,.list-thumb .zone .thumb-empty{font-size:9px}.list-detail{flex-direction:column;flex:1;gap:3px;min-width:0;padding:2px 0;display:flex}.list-label{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:15px;font-weight:500;overflow:hidden}.list-statuses{flex-wrap:wrap;gap:10px;margin-bottom:4px;display:flex}.list-status-chip{font-size:12px;font-weight:500}.list-statuses .card-chip{align-self:center;padding:2px 7px;font-size:10px}.list-fields{flex-direction:column;gap:5px;display:flex}.list-zone-group{border-left:2px solid var(--border);flex-direction:column;gap:4px;margin:6px 0;padding:4px 0 4px 10px;display:flex}.list-zone-group+.list-zone-group{margin-top:2px}.list-zone-head{text-transform:uppercase;letter-spacing:.05em;color:var(--accent);font-size:10px;font-weight:600}.list-zone-empty{color:var(--text-whisper);font-size:11px}.list-field{gap:10px;font-size:12px;line-height:1.5;display:flex}.list-fl{color:var(--text-faint);flex-shrink:0;min-width:100px;font-size:11px}.list-fv{color:var(--text-primary);white-space:pre-wrap;word-break:break-word}.list-modified{color:var(--text-whisper);margin-top:auto;padding-top:6px;font-size:11px}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--border-input)}@media (width<=800px){.toolbar{gap:6px;padding:8px 10px;position:relative}.pub-title{font-size:12px}.toolbar-menu-btn,.toolbar-search-btn{justify-content:center;align-items:center;display:inline-flex}.search-bar{display:none}.search-bar.open{display:flex}.search-input,.search-goto-input,.ef-input,.ef-ta,.flipbook-jump{font-size:16px}.search-facet,.loc-filter,.ef-select{font-size:13px}.search-input{padding:9px 30px 9px 32px}.search-icon{font-size:13px;left:11px}.search-clear{padding:6px 8px;font-size:18px}.search-facet{max-width:none;padding:6px 8px}.search-goto-input{width:72px;padding:8px}.search-mode-btn{padding:9px 14px;font-size:13px}.search-nav-btn{padding:7px 12px}.toolbar-actions{background:var(--bg-surface);border:.5px solid var(--border);box-shadow:var(--shadow-modal);z-index:90;border-radius:8px;flex-direction:column;align-items:stretch;gap:4px;min-width:180px;padding:6px;display:none;position:absolute;top:calc(100% + 2px);right:8px}.toolbar-actions.open{display:flex}.toolbar-actions .tbtn{text-align:left;justify-content:flex-start;padding:8px 10px;font-size:12px}.body-row{position:relative}.sidebar{z-index:80;width:240px;min-width:240px;transition:transform .22s;position:absolute;top:0;bottom:0;left:0;box-shadow:6px 0 24px #00000040}body.sidebar-collapsed .sidebar{border-right-width:.5px;width:240px;min-width:240px;transform:translate(-100%)}body:not(.sidebar-collapsed) .sidebar-backdrop{z-index:79;background:#00000059;display:block;position:absolute;inset:0}.modal{width:96vw;max-height:92dvh}.modal.pdf-page-picker{width:96vw}.pp-grid{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px}.pp-body{padding:12px}.modal-body{flex-direction:column;overflow-y:auto}.modal-l{border-right:none;border-bottom:.5px solid var(--border);flex-direction:column;flex:none;gap:10px;width:100%;min-width:0;padding:12px;overflow:visible}.modal-thumb-lg{flex:none;width:100%;max-width:260px;margin:0 auto}.modal-l .upload-zone{flex:none;padding:10px}.modal-r{flex:none;padding:12px 14px;overflow:visible}.modal-meta{border-left:none;border-top:.5px solid var(--border);flex-direction:column;flex:none;gap:14px;width:100%;min-width:0;padding:12px 14px;overflow:visible}.modal-meta .meta-group{flex:none}.modal-meta .meta-group-lbl{width:72px}.modal-meta .layout-picker{grid-template-columns:repeat(4,1fr);max-width:260px}.spreads-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.singles-grid{grid-template-columns:repeat(auto-fill,minmax(80px,120px))}.flatplan{padding:10px}.flatplan.view-large .spreads-grid{grid-template-columns:1fr;gap:10px}.flatplan.view-large .singles-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}.list-row{flex-direction:column;gap:10px}.list-thumb{width:100%;min-width:0;max-width:260px}#vBtnXl,#vBtnList{display:none}.topbar-user{padding-left:0}.topbar-user-btn{border:.5px solid #ffffff1a;padding:4px 7px}.topbar-user-btn .topbar-user-name,.topbar-user-btn .topbar-role-pill,.topbar-user-btn .topbar-user-caret{display:none}}@media (width<=401px){.topbar-by{display:none}}.flipbook-wrap{z-index:200;background:#0a0a0aeb;flex-direction:column;display:none;position:fixed;inset:0}body.flipbook-lock{overflow:hidden}.flipbook-head{color:#fff;border-bottom:.5px solid #ffffff1a;flex:none;align-items:center;gap:16px;padding:12px 18px;display:flex}.flipbook-title{color:#fff;margin-right:auto;font-size:14px;font-weight:600}.flipbook-controls{align-items:center;gap:8px;display:flex}.flipbook-btn{color:#fff;cursor:pointer;background:#ffffff1a;border:.5px solid #ffffff26;border-radius:6px;width:30px;height:30px;font-size:16px;line-height:1;transition:background .15s}.flipbook-btn:hover{background:#fff3}.flipbook-counter{color:#ffffffbf;font-variant-numeric:tabular-nums;text-align:center;min-width:56px;font-size:12px}.flipbook-jump{color:#fff;text-align:center;font-variant-numeric:tabular-nums;background:#0006;border:.5px solid #fff3;border-radius:6px;width:56px;height:28px;font-size:12px}.flipbook-x{color:#ffffffa6;cursor:pointer;background:0 0;border:0;border-radius:6px;width:32px;height:32px;font-size:22px;line-height:1;transition:background .15s,color .15s}.flipbook-x:hover{color:#fff;background:#ffffff1a}.flipbook-stage{flex:auto;justify-content:center;align-items:center;min-height:0;padding:16px;display:flex;overflow:hidden}.flipbook-fit{max-width:100%;max-height:100%;position:relative}.flipbook-book{width:100%;height:100%;position:relative}.flipbook-page{background:#fff;position:relative;overflow:hidden;box-shadow:0 1px 3px #0000002e}.flipbook-page-num{color:#00000073;z-index:4;pointer-events:none;background:#ffffffd9;border-radius:4px;padding:2px 6px;font-size:11px;position:absolute;bottom:8px;right:10px}.turn-vanilla-book{perspective:2400px}.turn-vanilla-book .turn-vanilla-page{background:#fff;box-shadow:0 1px 4px #00000040}@media (width<=640px){.flipbook-head{gap:10px;padding:10px 12px}.flipbook-title{font-size:13px}.flipbook-jump{display:none}.flipbook-stage{padding:8px}}.center-page{background:var(--bg-app);justify-content:center;align-items:center;min-height:100dvh;padding:16px;display:flex;overflow:auto}.login-card{background:var(--bg-surface);border:.5px solid var(--border);width:100%;max-width:360px;box-shadow:var(--shadow-card);border-radius:12px;flex-direction:column;gap:6px;padding:28px;display:flex}.login-brand{align-items:baseline;gap:5px;margin-bottom:14px;display:flex}.login-logo{letter-spacing:-.01em;font-size:14px;font-weight:600}.login-by{color:var(--text-faint);font-size:11px}.login-title{margin-bottom:10px;font-size:18px;font-weight:600}.login-card .ef-lbl{margin-top:6px}.login-error{color:#c0392b;margin-top:4px;font-size:12px}.login-submit{width:100%;margin-top:14px}.message-card{text-align:center;max-width:480px}.message-body{color:var(--text-muted);line-height:1.5}.confirm-wrap{z-index:450}.confirm-modal{width:min(440px,100vw - 32px);padding:0}.modal-body.confirm-body{display:block;overflow-y:auto}.confirm-body{color:var(--text-primary);padding:20px 22px 8px;font-size:13px;line-height:1.5}.confirm-actions{justify-content:flex-end;padding:12px 22px 18px}.empty-add{justify-content:center;margin-top:14px;display:flex}@media (width<=800px){body.sidebar-collapsed .sidebar{box-shadow:none}}.message-detail{color:var(--text-faint);word-break:break-word;margin:10px 0 16px;font-size:11px}.label-stack{display:inline-grid}.label-stack>span{grid-area:1/1}.label-stack>.label-ghost,.search-reset.is-idle{visibility:hidden}@media (width>=801px){.search-input-wrap{flex:0 0 300px}}button.sidebar-version{cursor:pointer;background:0 0;border:0;padding:0;font-family:inherit}.whats-new{flex-direction:column;width:min(560px,100vw - 32px);max-height:80vh;display:flex}.whats-new-body{padding:4px 22px 20px;overflow-y:auto}.whats-new-release h3{margin:14px 0 8px;font-size:14px;font-weight:600}.whats-new-date{color:var(--text-faint);font-weight:400}.whats-new-release ul{color:var(--text-muted);flex-direction:column;gap:6px;padding-left:18px;font-size:13px;line-height:1.45;display:flex}.login-hint{color:var(--text-muted);margin-bottom:4px;font-size:12px;line-height:1.45}.login-link{color:var(--accent);font:inherit;cursor:pointer;background:0 0;border:0;align-self:center;margin-top:10px;padding:0;font-size:12px}.login-link:hover{text-decoration:underline}:root{--jobs-w:380px;--jobs-warn:#b7791f;--jobs-bad:#c0392b}html.dark{--jobs-warn:#e0a84a;--jobs-bad:#e57373}.tbtn.jobs-btn{align-items:center;gap:6px;display:inline-flex}.jobs-badge{background:var(--jobs-warn);color:#fff;text-align:center;border-radius:9px;min-width:17px;height:17px;padding:0 5px;font-size:10px;font-weight:600;line-height:17px}.jobs-badge.is-done{color:var(--accent-green);background:0 0;min-width:0;padding:0}.tbtn.jobs-btn.active .jobs-badge.is-done{color:#fff}.jobs-panel{z-index:60;width:var(--jobs-w);background:var(--bg-surface);border-left:.5px solid var(--border);visibility:hidden;flex-direction:column;max-width:100vw;transition:transform .2s,visibility 0s linear .2s;display:flex;position:fixed;top:44px;bottom:0;right:0;transform:translate(100%);box-shadow:-6px 0 24px #0000000f}.jobs-panel.open{visibility:visible;transition:transform .2s;transform:none}body.jobs-open .body-row{padding-right:var(--jobs-w)}@media (width<=800px){.jobs-panel{width:100vw}body.jobs-open .body-row{padding-right:0}}@media (prefers-reduced-motion:reduce){.jobs-panel,.jobs-panel.open{transition:none}}.jobs-head{border-bottom:.5px solid var(--border);flex-shrink:0;align-items:center;gap:8px;padding:10px 14px;display:flex}.jobs-head-title{flex:1;align-items:baseline;gap:8px;min-width:0;display:flex}.jobs-title{color:var(--text-primary);font-size:13px;font-weight:600}.jobs-subtitle{color:var(--text-faint);white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}.jobs-sync{color:var(--text-muted);border-bottom:.5px solid var(--border-subtle);background:var(--bg-elevated);flex-shrink:0;align-items:center;gap:8px;padding:7px 14px;font-size:11px;display:flex}.jobs-sync-text{flex:1;min-width:0}.jobs-sync-off{color:var(--jobs-warn)}.jobs-sync-error{color:var(--jobs-bad);margin-top:2px}.jobs-sync .tbtn{padding:4px 9px}.jobs-tabs{flex-shrink:0;gap:2px;padding:8px 14px 0;display:flex}.jobs-tab{font:inherit;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;padding:6px 10px;font-size:12px;font-weight:500}.jobs-tab.active{color:var(--text-primary);border-bottom-color:var(--accent)}.jobs-tab-count{color:var(--text-faint);margin-left:2px;font-size:10px}.jobs-deadlines{color:var(--text-faint);border-bottom:.5px solid var(--border-subtle);flex-wrap:wrap;flex-shrink:0;gap:4px 12px;padding:6px 14px;font-size:10px;display:flex}.jobs-filters{border-bottom:.5px solid var(--border-subtle);flex-direction:column;flex-shrink:0;gap:6px;padding:8px 14px;display:flex}.jobs-filters .ef-input,.jobs-filters .ef-select{padding:5px 8px;font-size:12px}.jobs-filter-row{grid-template-columns:1fr 1fr 1fr;gap:6px;display:grid}.jobs-filter-row .ef-select{min-width:0}.jobs-reset,.jobs-linkbtn{font:inherit;color:var(--accent);cursor:pointer;background:0 0;border:none;align-self:flex-start;padding:0;font-size:11px}.jobs-body{overscroll-behavior:contain;flex:1;padding:4px 0 18px;overflow-y:auto}.jobs-muted{color:var(--text-faint);font-size:11px;line-height:1.45}.jobs-pad{padding:8px 14px}.jobs-empty{color:var(--text-primary);flex-direction:column;gap:8px;padding:18px 14px;font-size:12px;display:flex}.jobs-section{margin-top:4px}.jobs-section-head{width:100%;font:inherit;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:6px;padding:8px 14px 4px;font-size:10px;font-weight:600;display:flex}.jobs-section-problems .jobs-section-head{color:var(--jobs-bad)}.jobs-caret{width:9px}.jobs-section-count{color:var(--text-faint);font-weight:500}.jobs-list{flex-direction:column;gap:4px;margin:0;padding:0 8px;list-style:none;display:flex}.jobs-item{border:.5px solid var(--border);background:var(--bg-surface);border-radius:8px;flex-direction:column;gap:4px;padding:7px 9px;display:flex}.jobs-item.is-draggable{cursor:grab}.jobs-item.is-draggable:hover{border-color:var(--border-input);background:var(--bg-elevated)}.jobs-item.is-draggable:active{cursor:grabbing}.jobs-item.is-placing{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.jobs-item.is-inactive{opacity:.65}.jobs-item-head{align-items:center;gap:5px;min-width:0;display:flex}.jobs-grip{color:var(--text-whisper);cursor:grab;font-size:11px}.jobs-item-name,.jobs-item-name-static{text-align:left;min-width:0;font:inherit;color:var(--text-primary);cursor:pointer;white-space:nowrap;text-overflow:ellipsis;background:0 0;border:none;flex:1;padding:0;font-size:12px;font-weight:600;overflow:hidden}.jobs-item-name:hover{text-decoration:underline;text-decoration-thickness:.5px}.jobs-item-name-static{cursor:inherit}.jobs-kind,.jobs-format{white-space:nowrap;border-radius:4px;flex-shrink:0;padding:3px 5px;font-size:9px;font-weight:600;line-height:1}.jobs-kind-ad{color:#2f74bf;background:#3d8bde1f}.jobs-kind-article{color:#b23b38;background:#d148451f}html.dark .jobs-kind-ad{color:#7fb5ee}html.dark .jobs-kind-article{color:#ec8d8a}.jobs-format{background:var(--bg-active);color:var(--text-primary)}.jobs-item-meta{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.jobs-pill{background:var(--bg-surface);border:1px solid;border-radius:9px;padding:1px 6px;font-size:10px;font-weight:500;line-height:1.2}.jobs-pay{color:#fff;border-radius:3px;padding:2px 5px;font-size:9px;font-weight:600;line-height:1.2}.jobs-warn{color:var(--jobs-warn);background:#d8a23e1f;border-radius:9px;padding:1px 6px;font-size:10px;font-weight:500;line-height:1.2}.jobs-warn.is-late{color:var(--jobs-bad);background:#c0392b1a}.jobs-sugg .jobs-warn{align-self:flex-start}.jobs-item-foot{color:var(--text-muted);align-items:center;gap:6px;font-size:11px;display:flex}.jobs-pages{flex-wrap:wrap;flex:1;align-items:center;gap:3px;display:flex}.jobs-unplaced{color:var(--text-faint);flex:1;font-style:italic}.jobs-page-link{font:inherit;color:var(--accent);background:var(--bg-elevated);border:.5px solid var(--border);cursor:pointer;border-radius:5px;padding:1px 6px;font-size:11px;font-weight:600}.jobs-page-link:hover{background:var(--bg-hover)}.jobs-place-btn{font:inherit;color:var(--text-primary);background:var(--bg-surface);border:.5px solid var(--border-input);cursor:pointer;white-space:nowrap;border-radius:6px;padding:3px 8px;font-size:11px;font-weight:500}.jobs-place-btn:hover{background:var(--bg-hover)}.jobs-place-btn.active{background:var(--accent);border-color:var(--accent);color:#fff}.jobs-place-btn:disabled{opacity:.4;cursor:not-allowed}.jobs-place-form{border-top:.5px dashed var(--border);flex-direction:column;gap:5px;padding-top:6px;display:flex}.jobs-place-hint{color:var(--text-muted);font-size:10px;line-height:1.4}.jobs-place-row{color:var(--text-muted);align-items:center;gap:5px;font-size:11px;display:flex}.jobs-place-row .ef-input,.jobs-place-row .ef-select{padding:4px 6px;font-size:12px}.jobs-place-page{width:62px}.jobs-place-zone{flex:1;min-width:0}.jobs-place-ok{padding:5px 10px;font-size:11px}.jobs-details{border-top:.5px solid var(--border-subtle);flex-direction:column;gap:3px;padding-top:5px;display:flex}.jobs-detail{color:var(--text-primary);gap:8px;font-size:11px;display:flex}.jobs-detail>span:first-child{width:110px;color:var(--text-faint);flex-shrink:0}.jobs-detail-muted{color:var(--text-faint)}.jobs-pdf-links{flex-wrap:wrap;gap:4px 10px;display:flex}.jobs-pdf-link{color:var(--accent);font-size:11px;text-decoration:none}.jobs-pdf-link:hover{text-decoration:underline}.jobs-suggest-tools{gap:12px;padding:0 14px 6px;display:flex}.jobs-sugg-main{cursor:pointer;align-items:center;gap:6px;min-width:0;display:flex}.jobs-sugg-main input{accent-color:var(--accent);flex-shrink:0;margin:0}.jobs-sugg.is-checked{background:#378add0a;border-color:#378add73}.jobs-sugg-label{color:var(--text-muted);overflow-wrap:anywhere;font-size:11px}.jobs-conf{border-radius:9px;padding:1px 6px;font-size:10px;font-weight:600}.jobs-conf-high{color:var(--accent-green);background:var(--accent-green-bg)}.jobs-conf-medium{color:var(--jobs-warn);background:#d8a23e1f}.jobs-conf-low{color:var(--text-muted);background:var(--bg-active)}.jobs-target{margin-left:auto}.jobs-suggest-apply{background:var(--bg-surface);border-top:.5px solid var(--border);margin-top:8px;padding:10px 14px;position:sticky;bottom:-18px}.jobs-suggest-apply .btn-save{width:100%}.jobs-failed{color:var(--jobs-bad);background:#c0392b12;border:.5px solid #c0392b4d;border-radius:8px;margin:6px 14px;padding:8px 10px;font-size:11px}.jobs-failed ul{margin:4px 0 0 16px}.thumb .zone .job-badge{z-index:3;letter-spacing:.02em;color:#fff;border-radius:4px;padding:2px 4px;font-size:8px;font-weight:700;line-height:1;position:absolute;bottom:3px;left:3px;box-shadow:0 0 0 1px #ffffffb3}.thumb .zone.job-fit{box-shadow:inset 0 0 0 2px #4a9f408c}.thumb .zone.drop-hover.job-drop-warn{outline-color:var(--jobs-warn);background:#d8a23e26}body.job-placing .flatplan .thumb .zone{cursor:copy}body.job-placing .flatplan .thumb .zone:hover{outline:2px dashed var(--accent);outline-offset:-2px}.jobs-placing-bar{z-index:70;background:var(--topbar-bg);color:#f2f1ec;width:max-content;max-width:calc(100vw - 32px);box-shadow:var(--shadow-modal);border-radius:10px;align-items:center;gap:10px;margin:0 auto;padding:8px 10px 8px 14px;font-size:12px;display:flex;position:fixed;bottom:18px;left:0;right:0}.jobs-placing-bar .tbtn{flex-shrink:0}body.jobs-open .jobs-placing-bar{right:var(--jobs-w);max-width:calc(100vw - var(--jobs-w) - 32px)}@media (width<=800px){body.jobs-open .jobs-placing-bar{max-width:calc(100vw - 32px);right:0}}.jobs-choice{max-width:460px}.jobs-choice-body p+p{margin-top:8px}.jobs-choice-actions{flex-wrap:wrap;justify-content:flex-end}.jobs-confirm-list{margin:8px 0 0 18px;font-size:12px}.jobs-confirm-more{color:var(--text-faint);margin-left:-18px;list-style:none}.page-jobs-list{flex-direction:column;gap:6px;margin:4px 0 0;padding:0;list-style:none;display:flex}.page-jobs-item{border:.5px solid var(--border);border-radius:8px;flex-direction:column;gap:4px;padding:7px 9px;display:flex}.page-jobs-head{flex-wrap:wrap;align-items:center;gap:5px;display:flex}.page-jobs-name{color:var(--text-primary);font-size:12px;font-weight:600}.page-jobs-zone{color:var(--text-faint);margin-left:auto;font-size:10px}.page-jobs-foot{align-items:center;gap:8px;display:flex}.page-jobs-foot .jobs-pdf-links,.page-jobs-foot .jobs-detail{flex:1}.page-jobs-remove{padding:3px 9px;font-size:11px}.integ-card-head{align-items:center;gap:8px;display:flex}.integ-card-head .members-add-title{flex:1}.integ-key-hint{color:var(--text-faint);margin-top:3px;font-size:10px;display:block}.integ-key-ok{color:var(--accent-green);font-weight:600}.jobs-sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.topbar{z-index:65}@media (width<=800px){.jobs-panel input,.jobs-place-row .ef-input,.jobs-filters .ef-input{font-size:16px}}.fb-book{transform-style:preserve-3d;-webkit-user-select:none;user-select:none;transition:transform .22s ease-in-out}.fb-half,.fb-leaf{width:50%;height:100%;position:absolute;top:0}.fb-left{left:0}.fb-right{left:50%}.fb-half{cursor:pointer}.fb-leaf{z-index:3;transform-style:preserve-3d;will-change:transform}.fb-leaf-fwd{transform-origin:0;left:50%}.fb-leaf-bwd{transform-origin:100%;left:0}.fb-face{backface-visibility:hidden;position:absolute;inset:0}.fb-back{transform:rotateY(180deg)}.fb-book .flipbook-page{aspect-ratio:auto;width:100%;height:100%}.fb-left .flipbook-page:after,.fb-right .flipbook-page:after,.fb-face .flipbook-page:after{content:"";pointer-events:none;z-index:3;width:6%;position:absolute;top:0;bottom:0}.fb-left .flipbook-page:after,.fb-leaf-bwd .fb-front .flipbook-page:after,.fb-leaf-fwd .fb-back .flipbook-page:after{background:linear-gradient(270deg,#0000002e,#0000);right:0}.fb-right .flipbook-page:after,.fb-leaf-fwd .fb-front .flipbook-page:after,.fb-leaf-bwd .fb-back .flipbook-page:after{background:linear-gradient(90deg,#0000002e,#0000);left:0}.fb-shade{pointer-events:none;z-index:5;background:linear-gradient(90deg,#0000001f,#0000 60%);animation:1s ease-in-out forwards fb-shade;position:absolute;inset:0}@keyframes fb-shade{0%{opacity:0}50%{opacity:1}to{opacity:0}}@media (prefers-reduced-motion:reduce){.fb-book{transition:none}}.modal.members-modal{width:820px}.members-company{width:auto;max-width:240px;padding:4px 8px;font-size:12px}.members-company-name{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.members-body{flex-direction:column;gap:10px;min-height:0;padding:14px 18px 18px;display:flex;overflow-y:auto}.members-body>*{flex-shrink:0}.members-hint{color:var(--text-faint);margin:0;font-size:11px;line-height:1.45}.members-empty{color:var(--text-muted);margin:12px 0;font-size:12px}.members-error{color:#c0392b}html.dark .members-error{color:#e57373}.members-count{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:10px;font-weight:500}.members-list{border:.5px solid var(--border);border-radius:9px;margin:0;padding:0;list-style:none;overflow:hidden}.member-row{border-top:.5px solid var(--border-subtle);grid-template-columns:minmax(0,1.6fr) 150px minmax(0,1.4fr) auto;align-items:center;gap:12px;padding:9px 12px;transition:opacity .15s;display:grid}.member-row:first-child{border-top:none}.member-row[aria-busy=true]{opacity:.6}.member-row.is-banned .member-label{color:var(--text-faint);text-decoration:line-through;text-decoration-thickness:1px}.member-id{min-width:0}.member-name{color:var(--text-primary);overflow-wrap:anywhere;flex-wrap:wrap;align-items:center;gap:5px;font-size:12px;font-weight:500;display:flex}.member-email{color:var(--text-faint);overflow-wrap:anywhere;margin-top:1px;font-size:11px}.member-badge{background:var(--bg-app);border:.5px solid var(--border);color:var(--text-muted);border-radius:10px;padding:3px 6px;font-size:9px;font-weight:500;line-height:1;text-decoration:none;display:inline-block}.member-badge.is-warn{color:#c0392b;background:#dc32320f;border-color:#dc32324d}html.dark .member-badge.is-warn{color:#e57373}.member-badge.is-info{color:var(--accent);background:#378add0f;border-color:#378add4d}.member-role{padding:5px 8px}.member-locs{flex-wrap:wrap;align-items:center;gap:4px 12px;min-width:0;display:flex}.member-loc{color:var(--text-primary);cursor:pointer;align-items:center;gap:5px;font-size:12px;display:inline-flex}.member-loc input{accent-color:var(--accent);margin:0}.member-locs-all{color:var(--text-faint);font-size:11px;font-style:italic}.member-locs-none{color:#b7791f;font-size:10px}.member-remove{padding:5px 10px}.member-remove:disabled,.member-role:disabled{opacity:.4;cursor:not-allowed}.members-add{border:.5px solid var(--border);background:var(--bg-elevated);border-radius:9px;flex-direction:column;gap:10px;margin-top:6px;padding:12px;display:flex}.members-add-title{color:var(--text-primary);font-size:12px;font-weight:500}.members-add-grid{grid-template-columns:1fr 1fr;gap:10px 12px;display:grid}.members-add .ef-actions{justify-content:flex-end}.members-add button:disabled{opacity:.5;cursor:progress}@media (width<=700px){.member-row{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"id id""role remove""locs locs";gap:8px}.member-id{grid-area:id}.member-role{grid-area:role}.member-locs{grid-area:locs}.member-remove{grid-area:remove}.members-add-grid{grid-template-columns:1fr}}.topbar-user-menu-company{color:var(--text-faint);white-space:nowrap;text-overflow:ellipsis;max-width:240px;margin-top:-4px;font-size:11px;overflow:hidden}.pub-form{flex-direction:column;gap:12px;padding:18px;display:flex;overflow-y:auto}.pub-form .ef-hint{color:var(--text-faint);font-size:11px}.pub-form .ef-actions{border-top:.5px solid var(--border);margin-top:2px;padding-top:12px}.pub-form .btn-delete{margin-left:auto}.pub-lock-row{align-items:flex-start;gap:8px;display:flex}.pub-lock-row input{margin-top:3px}.pub-lock-help{opacity:.7;font-size:12px;line-height:1.35}.sidebar .pub-list>.empty-hint{padding:24px 12px}.topbar-user-menu-name,.topbar-user-menu-link{color:var(--text-primary)}.topbar-user-menu .topbar-role-pill{background:var(--bg-app);color:var(--text-muted);border-color:var(--border)}@media (width>=801px) and (width<=1240px){.toolbar{position:relative}.toolbar-menu-btn{justify-content:center;align-items:center;display:inline-flex}.toolbar-actions{background:var(--bg-surface);border:.5px solid var(--border);box-shadow:var(--shadow-modal);z-index:90;border-radius:8px;flex-direction:column;align-items:stretch;gap:4px;min-width:180px;padding:6px;display:none;position:absolute;top:calc(100% + 2px);right:8px}.toolbar-actions.open{display:flex}.toolbar-actions .tbtn{text-align:left;justify-content:flex-start;padding:8px 10px;font-size:12px}}@media (width>=801px) and (width<=1620px){body.jobs-open .toolbar{position:relative}body.jobs-open .toolbar-menu-btn{justify-content:center;align-items:center;display:inline-flex}body.jobs-open .toolbar-actions{background:var(--bg-surface);border:.5px solid var(--border);box-shadow:var(--shadow-modal);z-index:90;border-radius:8px;flex-direction:column;align-items:stretch;gap:4px;min-width:180px;padding:6px;display:none;position:absolute;top:calc(100% + 2px);right:8px}body.jobs-open .toolbar-actions.open{display:flex}body.jobs-open .toolbar-actions .tbtn{text-align:left;justify-content:flex-start;padding:8px 10px;font-size:12px}}@media (width>=801px) and (width<=1000px){body.jobs-open .view-btns{display:none}}
