:root{--font-family-ui: "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Yu Gothic", system-ui, sans-serif;--font-family-bookgrid: Helvetica, "Helvetica Neue", Arial, sans-serif;--bookgrid-wordmark-weight: 300;--bookgrid-wordmark-letter-spacing: .11em;--book-grid-background: #f4f3ef;--color-background: var(--book-grid-background);--color-surface: #ffffff;--color-surface-elevated: rgba(255, 255, 255, .94);--color-text-primary: #1d1d1b;--color-text-strong: #20252c;--color-text-secondary: #697078;--color-text-tertiary: #8a8d87;--color-border: #e1e1de;--color-divider: #eeeeeb;--color-danger: #bd3528;--color-success: #3e765c;--shadow-low: none;--shadow-medium: none;--shadow-high: none;--font-xs: 12px;--font-sm: 13px;--font-md: 16px;--font-lg: 18px;--font-xl: 24px;--font-2xl: 32px;--font-3xl: 40px;--line-heading: 1.25;--line-body: 1.65;--line-label: 1.45;--line-button: 1.3;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--space-7: 40px;--space-8: 48px;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 20px;--radius-full: 999px;--tap-min: 44px;--control-height: 56px;--book-cover-copy-top: 14%;--book-cover-copy-left: 15%;--book-cover-copy-width: 68%;--book-cover-copy-max-height: 32%;--book-cover-progress-width: 82%;font-family:var(--font-family-ui);font-size:var(--font-md);font-weight:300;line-height:var(--line-body);color:var(--color-text-primary);background:var(--book-grid-background);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.app-startup-loading{min-height:100dvh;background:var(--book-grid-background, #f7f5f0)}.release-smoke-panel{position:fixed;z-index:140;top:calc(env(safe-area-inset-top) + 76px);left:10px;width:auto;max-width:calc(100vw - 20px);color:#f8f8f5;font-family:var(--font-family-ui);font-size:11px;letter-spacing:0;pointer-events:auto}.release-smoke-panel.is-expanded{width:min(336px,calc(100vw - 20px))}.release-smoke-toggle,.release-smoke-content button{min-height:32px;border:1px solid rgba(255,255,255,.22);border-radius:6px;background:#24272b;color:inherit;font:inherit}.release-smoke-toggle{min-width:64px;padding:7px 12px;box-shadow:0 4px 14px #00000038}.release-smoke-content{display:grid;gap:9px;max-height:min(70dvh,650px);margin-top:5px;padding:10px;overflow:auto;overscroll-behavior:contain;border:1px solid rgba(255,255,255,.2);border-radius:7px;background:#191c20f5;box-shadow:0 8px 28px #0000004d}.release-smoke-content section{display:grid;gap:5px;padding-top:8px;border-top:1px solid rgba(255,255,255,.14)}.release-smoke-content h3,.release-smoke-content p,.release-smoke-content strong{margin:0}.release-smoke-content h3{font-size:12px;font-weight:600}.release-smoke-content button{padding:6px 8px}.release-smoke-content button:disabled{opacity:.42}.release-smoke-guard,.release-smoke-namespace{color:#b8c0c8;overflow-wrap:anywhere}.release-smoke-warning{color:#ffd17a}.release-smoke-metrics{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 8px;margin:0}.release-smoke-metrics div{display:contents}.release-smoke-metrics dt,.release-smoke-metrics dd{margin:0}.release-smoke-metrics dd{text-align:right;font-variant-numeric:tabular-nums}.release-smoke-button-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}.release-smoke-reset{border-color:#ffaa9680!important;color:#ffd0c5!important}.device-audit-panel{position:fixed;z-index:150;top:calc(env(safe-area-inset-top,0px) + 66px);left:8px;width:auto;color:#171a1d;font-family:var(--font-family-ui);font-size:12px;pointer-events:auto}.device-audit-panel.is-expanded{top:calc(env(safe-area-inset-top,0px) + 8px);width:min(340px,calc(100vw - 16px))}.grid-runtime-projection-overlay{position:fixed;z-index:145;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none}.grid-runtime-projection-rect{position:fixed;box-sizing:border-box}.grid-runtime-projection-rect.is-usable{border:2px solid rgb(25 170 92 / 90%);background:#19aa5c0d}.grid-runtime-projection-rect.is-forbidden{border:2px solid rgb(220 54 54 / 92%);background:#dc36361f}.grid-runtime-projection-rect.is-forbidden span{padding:2px 4px;color:#fff;background:#aa1919eb;font-size:9px}.grid-runtime-projection-rect.is-union{border:2px solid rgb(38 106 222 / 96%)}.grid-runtime-projection-rect.is-book-problem{border:2px solid rgb(235 35 35 / 100%);background:#eb232329}.grid-runtime-projection-rect.is-book-problem.is-occluded{border-color:#eb8418;background:#eb84182e}.grid-runtime-projection-metrics{position:fixed;bottom:calc(112px + env(safe-area-inset-bottom));left:10px;padding:7px 9px;color:#fff;background:#11171cdb;font:10px/1.4 ui-monospace,SFMono-Regular,Menlo,monospace;font-variant-numeric:tabular-nums}.grid-raster-segmentation-active .grid-fixed-ui-layer,.grid-raster-segmentation-active .mobile-app-chrome,.grid-raster-segmentation-active .bottom-nav,.grid-raster-segmentation-active .device-audit-panel,.grid-raster-segmentation-active .grid-runtime-projection-overlay,.grid-raster-segmentation-active .app-status-banner,.grid-raster-segmentation-active .grid-canvas-loading-cover{visibility:hidden!important}.device-audit-toggle,.device-audit-content button,.device-audit-content input{min-height:34px;border:1px solid rgb(23 26 29 / 16%);border-radius:6px;background:#fffffff5;color:inherit;font:inherit}.device-audit-toggle{min-width:64px;padding:0 12px;box-shadow:0 6px 20px #0000001f;font-weight:500;letter-spacing:.08em}.device-audit-content{display:grid;gap:10px;max-height:min(720px,calc(100dvh - env(safe-area-inset-top,0px) - 24px));margin-top:6px;padding:12px;overflow:auto;overscroll-behavior:contain;border:1px solid rgb(23 26 29 / 14%);border-radius:8px;background:#f8f8f6f7;box-shadow:0 10px 32px #00000024}.device-audit-content header,.device-audit-stepper,.device-audit-summary div{display:flex;align-items:center;justify-content:space-between;gap:8px}.device-audit-presets{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px}.device-audit-presets button.is-selected{border-color:#171a1d;background:#171a1d;color:#fff}.device-audit-stepper button{min-width:42px}.device-audit-stepper input{width:66px;padding:0 7px;text-align:right}.device-audit-content button:disabled,.device-audit-content input:disabled{opacity:.45}.device-audit-status,.device-audit-content section p,.device-audit-content h3{margin:0}.device-audit-content h3{margin-bottom:4px;font-size:12px;font-weight:500}.device-audit-summary{display:grid;grid-template-columns:1fr 1fr;gap:3px 12px;margin:0}.device-audit-summary dt,.device-audit-summary dd{margin:0}.device-audit-summary dd{font-variant-numeric:tabular-nums}.device-audit-zoom-metrics{display:grid;grid-template-columns:1fr 1fr;gap:3px 12px;margin:0 0 7px}.device-audit-zoom-metrics div{display:flex;justify-content:space-between;gap:6px}.device-audit-zoom-metrics dt,.device-audit-zoom-metrics dd{margin:0}.device-audit-zoom-metrics dd{font-variant-numeric:tabular-nums}.device-audit-zoom-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px}.device-audit-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px}.device-audit-actions .is-danger{grid-column:1 / -1;color:#8b241f}*{box-sizing:border-box}html,body,#root{width:100%;min-height:100%;min-height:100dvh;height:100%;margin:0;background:var(--book-grid-background);background-color:var(--book-grid-background);overflow:hidden;overscroll-behavior:none}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid rgba(32,37,44,.18);outline-offset:3px}body,button,input,select,textarea{font-family:var(--font-family-ui)}.bookgrid-wordmark,.bookgrid-product-name{font-family:var(--font-family-bookgrid);font-weight:var(--bookgrid-wordmark-weight);letter-spacing:var(--bookgrid-wordmark-letter-spacing);font-synthesis:none}button,a,[role=button]{-webkit-tap-highlight-color:transparent}button{touch-action:manipulation}.viewer-shell{position:relative;--top-grid-shell-pad: clamp(14px, 2vw, 24px);--top-grid-sidebar-width: clamp(188px, 18vw, 232px);--top-grid-shell-gap: clamp(10px, 1.1vw, 14px);width:100%;height:100vh;height:100dvh;min-height:100dvh;overflow:hidden;background:var(--book-grid-background);background-color:var(--book-grid-background);isolation:isolate}.viewer-shell:before{position:fixed;z-index:0;top:0;right:0;bottom:0;left:0;background:var(--book-grid-background);content:"";pointer-events:none}.app-error-screen{display:grid;min-height:100dvh;place-items:center;padding:var(--space-5);color:#1d1d1b;background:#f7f7f4}.app-error-screen>div{width:min(460px,100%);border:1px solid #e1e1de;border-radius:var(--radius-xl);padding:var(--space-6);background:#fff;box-shadow:none}.app-error-screen p,.app-error-screen h1{margin:0}.app-error-screen p{color:#7a7f79;font-size:var(--font-sm);line-height:var(--line-label)}.app-error-screen h1{margin-top:var(--space-2);color:#20252c;font-size:24px;font-weight:400;line-height:var(--line-heading)}.app-error-screen button{min-height:var(--tap-min);margin-top:var(--space-5);border:0;border-radius:var(--radius-md);padding:0 var(--space-5);color:#fff;background:#20252c;font:inherit;cursor:pointer}.app-status-banner{position:fixed;z-index:60;right:max(var(--space-4),env(safe-area-inset-right));bottom:calc(96px + env(safe-area-inset-bottom));display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:var(--space-3);width:min(420px,calc(100vw - 32px));border:1px solid rgba(32,37,44,.1);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);color:#20252c;background:#fffffff0;box-shadow:none;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);pointer-events:none}.app-status-banner.is-error{border-color:#bd352838;color:#7f2a22;background:#fff8f6f5}.app-status-banner p{margin:0;font-size:var(--font-sm);line-height:var(--line-label)}.app-status-banner button{pointer-events:auto;width:30px;height:30px;border:0;border-radius:999px;color:inherit;background:transparent;font:inherit;cursor:pointer}.app-status-banner .app-status-action{width:auto;min-width:0;height:32px;border:1px solid rgba(32,37,44,.12);padding:0 var(--space-3);color:#2f373f;background:#f7f7f4db;font-size:var(--font-xs);white-space:nowrap}.viewer-header{position:fixed;z-index:10;top:0;left:0;right:0;display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-5);padding:var(--space-5) clamp(var(--space-4),4vw,var(--space-7));pointer-events:none}.viewer-kicker{margin:0 0 var(--space-2);color:#68665f;font-size:var(--font-xs);font-weight:400;letter-spacing:0;text-transform:uppercase}.viewer-header h1{margin:0;color:#181816;font-size:clamp(28px,4vw,var(--font-3xl));font-weight:400;line-height:var(--line-heading);letter-spacing:0}.viewer-status{display:flex;flex-direction:column;align-items:flex-end;gap:var(--space-1);color:#555249;font-size:var(--font-sm);line-height:var(--line-label);text-align:right;white-space:nowrap}.top-grid-shell{position:fixed;z-index:18;top:0;right:0;bottom:0;left:0;--top-grid-shell-pad: clamp(14px, 2vw, 24px);--top-grid-sidebar-width: clamp(188px, 18vw, 232px);--top-grid-shell-gap: clamp(10px, 1.1vw, 14px);pointer-events:none}.top-grid-sidebar{position:absolute;top:var(--top-grid-shell-pad);bottom:var(--top-grid-shell-pad);left:var(--top-grid-shell-pad);width:var(--top-grid-sidebar-width);max-height:calc(100vh - var(--top-grid-shell-pad) * 2);overflow:auto;overflow-x:hidden;border:1px solid rgba(39,37,32,.08);border-radius:var(--radius-xl);padding:24px 22px;color:#22262a;background:#faf9f5f5;box-shadow:none;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);pointer-events:auto}.top-grid-sidebar-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin-bottom:32px}.top-grid-sidebar h1{margin:0;color:#20252c;font-size:clamp(20px,1.8vw,25px);font-weight:400;line-height:1.15;letter-spacing:0}.top-grid-sidebar h1.bookgrid-wordmark{font-weight:var(--bookgrid-wordmark-weight);letter-spacing:var(--bookgrid-wordmark-letter-spacing)}.top-grid-sidebar-head button,.top-grid-pages button,.top-grid-section button,.top-grid-labels button,.top-grid-add{border:0;padding:0;background:transparent;font:inherit;cursor:pointer}.top-grid-sidebar-head button{display:grid;width:var(--tap-min);height:var(--tap-min);place-items:center;border-radius:var(--radius-md);color:#697078;background:#ffffff8a;font-size:18px;line-height:1}.top-grid-sidebar-head button:hover{color:#20252c;background:#fff}.top-grid-pages{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:24px;border-bottom:1px solid rgba(37,42,39,.08);padding-bottom:20px}.top-grid-pages button{position:relative;display:grid;min-height:var(--tap-min);place-items:center;border-radius:var(--radius-full);padding:0;color:#8b8d88}.top-grid-pages button:hover{color:#252a27}.top-grid-pages button.is-active{color:#20252c}.top-grid-pages button.is-active:after{position:absolute;bottom:4px;width:22px;height:3px;border-radius:var(--radius-full);background:currentColor;content:""}.top-grid-section{display:grid;gap:13px}.top-grid-section button{display:grid;grid-template-columns:16px minmax(0,1fr) auto;align-items:center;gap:9px;min-height:40px;border-radius:var(--radius-md);padding:0 var(--space-2);color:#9b9c98;font-size:13px;font-weight:400;line-height:1.3;text-align:left}.top-grid-section button:hover,.top-grid-labels button:hover{color:#2f342f;background:#252a270a}.top-grid-section button.is-active{color:#252a27;background:#252a270b}.top-grid-section strong{color:#c6c6c1;font-size:12px;font-weight:400}.top-grid-nav-icon{display:grid;width:16px;height:16px;place-items:center;color:#b6b7b2;font-size:12px}.nav-icon{display:grid;width:28px;height:28px;place-items:center;color:currentColor;line-height:1}.nav-icon svg{width:28px;height:28px;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}.nav-icon-grid{grid-template-columns:repeat(3,6px);grid-template-rows:repeat(3,6px);gap:4px;width:26px;height:26px;place-content:center}.nav-icon-grid span{display:block;width:6px;height:6px;border-radius:var(--radius-full);background:#111417}.top-grid-page-label{display:none}.top-grid-pages .nav-icon{width:22px;height:22px}.top-grid-pages .nav-icon svg{width:22px;height:22px;stroke-width:2.3}.top-grid-pages .nav-icon-grid{grid-template-columns:repeat(3,5px);grid-template-rows:repeat(3,5px);gap:3px;width:21px;height:21px}.top-grid-pages .nav-icon-grid span{width:5px;height:5px}.top-grid-labels{display:grid;gap:12px;margin-top:34px}.top-grid-labels-head{display:flex;align-items:center;justify-content:space-between;color:#5f625e;font-size:13px;font-weight:400}.top-grid-labels button{display:grid;grid-template-columns:14px minmax(0,1fr) auto;align-items:center;gap:9px;min-height:40px;border-radius:var(--radius-md);padding:0 var(--space-2);color:#6d716d;font-size:13px;font-weight:400;line-height:1.3;text-align:left;touch-action:manipulation}.top-grid-labels button.is-active{color:#252a27;background:#252a270b}.top-grid-labels strong{color:#c6c6c1;font-size:12px;font-weight:400}.top-grid-label-dot{width:13px;height:13px;border-radius:999px;box-shadow:inset 0 0 0 1px #201f1c14}.top-grid-labels .top-grid-new-label{margin-top:6px;color:#a4a5a0}.top-grid-pro-panel{display:grid;gap:4px;width:100%;min-height:60px;margin-top:28px;border:1px solid rgba(37,42,39,.1);border-radius:var(--radius-md);padding:12px 13px;color:#535a54;background:#ffffff9e;font:inherit;text-align:left;cursor:pointer}.top-grid-pro-panel:hover{border-color:#252a272e;background:#ffffffe6}.top-grid-pro-panel span{color:#20252c;font-size:13px;line-height:1.25}.top-grid-pro-panel strong{color:#8a8d87;font-size:12px;font-weight:400;line-height:1.35}.top-grid-pro-panel.is-active{border-color:#1d1d1b2e;background:#fff}.mobile-menu-data-actions{display:grid;gap:var(--space-2);margin-top:24px;border-top:1px solid rgba(37,42,39,.08);padding-top:18px}.mobile-menu-data-actions button{min-height:var(--tap-min);border:1px solid rgba(32,37,44,.08);border-radius:var(--radius-md);padding:0 var(--space-4);color:#3d454d;background:#ffffffad;font:inherit;font-size:var(--font-sm);line-height:var(--line-button);text-align:left;cursor:pointer}.mobile-menu-data-actions button:hover{background:#fff}.top-grid-toolbar{position:absolute;top:var(--top-grid-shell-pad);right:var(--top-grid-shell-pad);left:calc(var(--top-grid-shell-pad) + var(--top-grid-sidebar-width) + var(--top-grid-shell-gap));display:flex;align-items:center;justify-content:space-between;min-height:72px;max-width:calc(100vw - var(--top-grid-shell-pad) * 2 - var(--top-grid-sidebar-width) - var(--top-grid-shell-gap));overflow:hidden;border:1px solid rgba(39,37,32,.075);border-radius:28px;padding:0 32px;color:#2f332f;background:#faf9f5f0;box-shadow:none;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);pointer-events:auto}.top-grid-title{display:grid;gap:2px;min-width:0;overflow:hidden}.top-grid-title span{overflow:hidden;color:#353936;font-size:16px;font-weight:400;line-height:1.25;text-overflow:ellipsis;white-space:nowrap}.top-grid-title small{overflow:hidden;color:#9a9b96;font-size:12px;font-weight:400;line-height:1.35;text-overflow:ellipsis;white-space:nowrap}.top-grid-add{display:inline-flex;flex:0 0 auto;align-items:center;gap:8px;min-height:40px;border:1px solid rgba(32,37,44,.09);border-radius:999px;padding:0 14px;color:#3f4547;background:#ffffff8f;font-size:13px;line-height:1}.top-grid-current-filter{display:none}.canvas-stage{position:fixed;top:0;right:0;bottom:0;left:0;--grid-background: var(--book-grid-background);--grid-safe-padding-x: clamp(72px, 18vw, 132px);--grid-safe-padding-y: clamp(72px, 18vw, 132px);--grid-interaction-top: 0px;--grid-interaction-right: 0px;--grid-interaction-bottom: 0px;--grid-interaction-left: 0px;width:100%;height:100vh;height:100dvh;min-height:100dvh;overflow:hidden;min-width:0;background:var(--grid-background);background-color:var(--grid-background);isolation:isolate}.grid-interaction-layer{position:absolute;top:var(--grid-interaction-top);right:var(--grid-interaction-right);bottom:var(--grid-interaction-bottom);left:var(--grid-interaction-left);z-index:1;overflow:hidden;touch-action:none;overscroll-behavior:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;cursor:grab}.grid-interaction-layer:active{cursor:grabbing}.grid-interaction-layer.is-reordering,.grid-interaction-layer.is-reordering:active{cursor:default}.grid-background-layer{position:absolute;top:-240px;right:-240px;bottom:-240px;left:-240px;z-index:0;background:var(--grid-background);pointer-events:none}.grid-canvas-loading-cover{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;background:var(--grid-background);pointer-events:none}.grid-zoom-viewport{position:absolute;inset:calc(0px - var(--grid-safe-padding-y)) calc(0px - var(--grid-safe-padding-x));z-index:1;overflow:visible;transform-origin:center center;transform:translateZ(0) scale(1);backface-visibility:hidden;-webkit-backface-visibility:hidden;will-change:transform}.viewer-canvas{display:block;width:100%;height:100%;background:var(--grid-background);touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.viewer-canvas canvas{display:block;width:100%!important;height:100%!important;background:var(--grid-background);touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.grid-fixed-ui-layer{position:fixed;z-index:21;top:0;right:0;bottom:0;left:0;width:100%;height:100dvh;min-height:100dvh;pointer-events:none;transform:none}.grid-fixed-ui-frame{position:absolute;top:var(--top-grid-shell-pad);right:var(--top-grid-shell-pad);bottom:var(--top-grid-shell-pad);left:calc(var(--top-grid-shell-pad) + var(--top-grid-sidebar-width) + var(--top-grid-shell-gap));min-width:0;min-height:0;pointer-events:none;transform:none}.grid-zoom-reset{position:absolute;right:20px;bottom:calc(104px + env(safe-area-inset-bottom));z-index:23;min-width:var(--tap-min);min-height:var(--tap-min);border:1px solid rgba(32,37,44,.09);border-radius:var(--radius-full);padding:0 14px;color:#20252c;background:#ffffffe6;box-shadow:none;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);cursor:pointer;font:inherit;font-size:var(--font-xs);line-height:1;pointer-events:auto;touch-action:manipulation}.grid-camera-button{position:absolute;right:20px;bottom:20px;z-index:24;display:grid;width:44px;height:44px;min-width:var(--tap-min);min-height:var(--tap-min);place-items:center;border:1px solid rgba(32,37,44,.1);border-radius:999px;padding:0;color:#20252c;background:#ffffffe6;box-shadow:none;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);cursor:pointer;pointer-events:auto;touch-action:manipulation}.grid-camera-button svg{display:block;width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.45;stroke-linecap:round;stroke-linejoin:round}.grid-camera-button:disabled{cursor:default;opacity:.58}.grid-reorder-controls{position:absolute;right:20px;bottom:92px;left:20px;z-index:25;display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:8px;border:1px solid rgba(32,37,44,.09);border-radius:8px;padding:8px;color:#20252c;background:#ffffffe6;box-shadow:none;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);pointer-events:auto;touch-action:manipulation}.grid-reorder-selection{overflow:hidden;padding:0 6px;color:#646963;font-size:var(--font-xs);line-height:var(--line-button);text-overflow:ellipsis;white-space:nowrap}.grid-reorder-controls button{min-width:52px;min-height:44px;border:0;border-radius:999px;padding:0 12px;color:#fff;background:#20252c;cursor:pointer;font:inherit;font-size:var(--font-xs);line-height:var(--line-button);touch-action:manipulation}.grid-reorder-controls .grid-reorder-delete{border:1px solid rgba(139,58,52,.18);color:#7d3f3a;background:#ffffffd1}.grid-reorder-controls .grid-reorder-delete:disabled{cursor:default;opacity:.42}.grid-delete-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:70;display:flex;align-items:center;justify-content:center;overflow:hidden;overscroll-behavior:contain;padding:var(--space-5);background:#f7f7f4ad;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);pointer-events:auto}.grid-delete-sheet{display:flex;flex-direction:column;width:min(440px,calc(100vw - var(--space-8)));max-height:calc(100dvh - var(--space-8));overflow:hidden;border:1px solid var(--color-border);border-radius:var(--radius-xl);color:var(--color-text-primary);background:var(--color-surface);box-shadow:var(--shadow-high)}.grid-delete-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);padding:var(--space-5) var(--space-6) var(--space-4);border-bottom:1px solid var(--color-divider)}.grid-delete-header>div{min-width:0}.grid-delete-header p,.grid-delete-header h2,.grid-delete-body p{margin:0}.grid-delete-header p{margin-bottom:var(--space-1);color:var(--color-text-tertiary);font-size:var(--font-xs);line-height:var(--line-label)}.grid-delete-header h2{color:#171716;font-size:var(--font-xl);font-weight:400;line-height:var(--line-heading)}.grid-delete-body{display:grid;gap:var(--space-1);min-height:0;padding:var(--space-5) var(--space-6)}.grid-delete-body span{color:var(--color-text-tertiary);font-size:var(--font-xs);line-height:var(--line-label)}.grid-delete-body p{overflow-wrap:anywhere;color:var(--color-text-strong);font-size:var(--font-md);font-weight:300;line-height:var(--line-label)}.grid-delete-actions{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3);padding:var(--space-4) var(--space-6) var(--space-5);border-top:1px solid var(--color-divider);background:#fffffff5}.grid-delete-actions button{min-width:0;min-height:var(--control-height);border-radius:var(--radius-md);font:inherit;font-weight:400;cursor:pointer}.grid-delete-actions button:first-child{border:1px solid #d8d8d4;color:var(--color-text-primary);background:var(--color-surface)}.grid-delete-confirm{border:1px solid var(--color-danger);color:var(--color-surface);background:var(--color-danger)}.grid-empty-state{position:absolute;top:50%;left:50%;z-index:4;display:grid;width:min(420px,calc(100% - 48px));gap:var(--space-3);justify-items:center;border:1px solid rgba(32,37,44,.08);border-radius:var(--radius-lg);padding:var(--space-6);color:#5f676f;background:#ffffffc7;box-shadow:none;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);line-height:var(--line-body);pointer-events:auto;text-align:center;transform:translate(-50%,-50%)}.grid-empty-state h2{margin:0;color:#20252c;font-size:clamp(22px,4vw,30px);font-weight:400;line-height:var(--line-heading)}.grid-empty-kicker{margin:0;color:#20252c;font-size:var(--font-sm);font-weight:500;line-height:var(--line-label)}.grid-empty-kicker.bookgrid-wordmark{font-weight:var(--bookgrid-wordmark-weight);letter-spacing:var(--bookgrid-wordmark-letter-spacing)}.grid-empty-state p{margin:0;max-width:34em;font-size:var(--font-sm)}.grid-empty-steps{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-2);margin:0;padding:0;color:#5f676f;font-size:var(--font-xs);line-height:var(--line-label);list-style:none}.grid-empty-steps li{border:1px solid rgba(32,37,44,.08);border-radius:999px;padding:7px 11px;background:#ffffff6b}.grid-empty-state button{min-height:42px;margin-top:var(--space-2);border:1px solid rgba(32,37,44,.1);border-radius:999px;padding:0 var(--space-5);color:#fff;background:#20252c;font:inherit;font-weight:400;cursor:pointer}.canvas-message{min-width:180px;width:min(74vw,420px);border:1px solid rgba(35,34,29,.14);border-radius:var(--radius-sm);padding:var(--space-3) var(--space-4);color:#2b2a25;background:#ffffffe6;box-shadow:none;font-size:var(--font-sm);line-height:var(--line-label);text-align:center}.canvas-message-error{border-color:#99303047;color:#8f2525;background:#fff8f8f0}.library-page{position:absolute;z-index:12;top:var(--top-grid-shell-pad);right:var(--top-grid-shell-pad);bottom:var(--top-grid-shell-pad);left:calc(var(--top-grid-shell-pad) + var(--top-grid-sidebar-width) + var(--top-grid-shell-gap));overflow:hidden;color:#1f252b;background:var(--book-grid-background);background-color:var(--book-grid-background)}.library-scroll{height:100%;overflow:auto;padding:var(--space-7) clamp(var(--space-6),5vw,var(--space-8)) 120px}.library-header{max-width:960px;margin:0 auto var(--space-4)}.library-toolbar,.shelf-toolbar{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-4);margin-bottom:var(--space-3)}.library-add-button{display:grid;width:var(--control-height);height:var(--control-height);place-items:center;border:1px solid #dedede;border-radius:var(--radius-lg);color:#6a727b;background:#fff;box-shadow:none;font:inherit;font-size:var(--font-2xl);line-height:1;cursor:pointer}.library-data-actions{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:0}.library-data-actions button{min-height:var(--tap-min);border:1px solid #dedede;border-radius:var(--radius-md);padding:0 var(--space-4);color:#3d454d;background:#fff;font:inherit;font-size:var(--font-sm);font-weight:400;line-height:var(--line-button);cursor:pointer}.library-data-actions button:hover{border-color:#cfcfca;background:#f7f7f4}.library-data-actions button:disabled{cursor:default;opacity:.58}.library-data-actions .library-pro-button{border-color:#c9cbc5;color:#20252c;background:#f8f8f4}.grid-snapshot-overlay{position:fixed;z-index:42;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;padding:max(var(--space-5),calc(var(--space-4) + env(safe-area-inset-top))) var(--space-5) max(var(--space-5),calc(var(--space-4) + env(safe-area-inset-bottom)));background:#f4f3efc7;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.grid-snapshot-sheet{display:flex;flex-direction:column;width:min(420px,calc(100vw - 32px));max-height:calc(100dvh - 48px);overflow:hidden;border:1px solid rgba(32,37,44,.08);border-radius:28px;color:#20252c;background:#ffffffeb;box-shadow:none}.grid-snapshot-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:20px 20px 14px}.grid-snapshot-header h2{margin:0;color:#20252c;font-size:21px;font-weight:400;line-height:var(--line-heading)}.grid-snapshot-body{display:grid;justify-items:center;gap:12px;min-height:0;overflow-x:hidden;padding:0 20px 20px}.grid-snapshot-preview{width:auto;height:min(58dvh,560px);max-width:100%;aspect-ratio:9 / 16;margin:0 auto;overflow:hidden;border:1px solid rgba(32,37,44,.08);border-radius:20px;background:var(--book-grid-background);box-shadow:none}.grid-snapshot-preview img{display:block;width:100%;height:100%;object-fit:cover;background:var(--book-grid-background)}.grid-snapshot-actions{display:grid;grid-template-columns:1fr;gap:4px;width:min(100%,315px)}.grid-snapshot-actions button{min-height:var(--tap-min);border:1px solid #dedede;border-radius:var(--radius-md);padding:0 var(--space-4);color:#3d454d;background:#fff;font:inherit;font-size:var(--font-sm);line-height:var(--line-button);cursor:pointer}.grid-snapshot-actions button:disabled{cursor:default;opacity:.58}.grid-snapshot-actions .grid-snapshot-primary{border-color:#20252c;color:#fff;background:#20252c}.grid-snapshot-actions .grid-snapshot-return{min-height:40px;border-color:transparent;color:#6f746f;background:transparent}.grid-snapshot-message{margin:0;color:#8e918b;font-size:var(--font-xs);line-height:var(--line-label);text-align:center}.grid-snapshot-message.is-error{color:#9a3934}.library-list{display:grid;gap:var(--space-4);max-width:960px;margin:0 auto}.library-card{display:grid;grid-template-columns:92px 1fr;gap:var(--space-5);align-items:center;width:100%;border:1px solid rgba(32,37,44,.08);border-radius:var(--radius-lg);padding:var(--space-5);color:inherit;background:#fff;box-shadow:none;font:inherit;text-align:left;cursor:pointer}.library-card:hover{background:#fff;border-color:#d5d5d2}.library-cover{position:relative;display:block;width:84px;aspect-ratio:.705;overflow:visible;border-radius:4px}.library-cover:after{content:none}.library-cover img{position:relative;z-index:1;display:block;width:100%;height:100%;overflow:hidden;border:1px solid rgba(32,37,44,.08);border-radius:4px;object-fit:cover}.library-cover-shape{position:relative;z-index:1;display:block;width:100%;height:100%}.library-card-body{display:grid;min-width:0;gap:var(--space-2)}.library-card-title{overflow:hidden;color:#20252c;font-size:var(--font-lg);font-weight:400;line-height:1.45;text-overflow:ellipsis;white-space:nowrap}.library-card-author,.library-updated{color:#68727c;font-size:var(--font-sm);line-height:var(--line-label)}.library-progress-line{display:flex;justify-content:space-between;gap:var(--space-4);color:#20252c;font-size:15px;font-weight:500;line-height:var(--line-label)}.progress-track{width:100%;height:6px;overflow:hidden;border-radius:999px;background:#e8e8e6}.progress-fill{height:100%;border-radius:inherit;background:#3e765c}.library-empty{border:1px solid #e2e2e0;border-radius:var(--radius-xl);padding:var(--space-6);color:#737a82;background:#fff;text-align:center}.library-empty h2{margin:0 0 var(--space-2);color:#20252c;font-size:clamp(22px,4vw,28px);font-weight:400;line-height:var(--line-heading)}.library-empty p{margin:0 auto var(--space-4);max-width:34em;font-size:var(--font-sm);line-height:var(--line-body)}.library-empty button{min-height:var(--tap-min);border:1px solid rgba(32,37,44,.1);border-radius:999px;padding:0 var(--space-5);color:#fff;background:#20252c;font:inherit;font-size:var(--font-sm);cursor:pointer}.shelf-empty-state{grid-column:1 / -1}.settings-page,.legal-page{position:absolute;z-index:12;top:var(--top-grid-shell-pad);right:var(--top-grid-shell-pad);bottom:var(--top-grid-shell-pad);left:calc(var(--top-grid-shell-pad) + var(--top-grid-sidebar-width) + var(--top-grid-shell-gap));overflow:hidden;color:#1f252b;background:var(--book-grid-background);background-color:var(--book-grid-background)}.settings-scroll,.legal-scroll{height:100%;min-height:100%;overflow:auto;-webkit-overflow-scrolling:touch;padding:var(--space-7) clamp(var(--space-5),5vw,var(--space-8)) calc(140px + env(safe-area-inset-bottom))}.settings-header,.legal-header,.settings-content,.legal-document{width:min(760px,100%);margin-right:auto;margin-left:auto}.settings-header,.legal-header{margin-bottom:var(--space-6)}.settings-header-compact{margin-bottom:var(--space-4)}.settings-kicker{margin:0 0 var(--space-2);color:#8a8d87;font-size:var(--font-xs);font-weight:400;line-height:var(--line-label);text-transform:uppercase}.settings-header h1,.legal-header h1{margin:0 0 var(--space-3);color:#20252c;font-size:clamp(32px,5vw,44px);font-weight:400;line-height:var(--line-heading)}.settings-header-compact h1{margin-bottom:0;font-size:clamp(26px,4vw,34px)}.settings-header p:last-child,.legal-header p{margin:0;color:#697078;font-size:var(--font-sm);line-height:var(--line-body)}.settings-content{display:grid;gap:var(--space-4)}.settings-section h2{margin:0 0 var(--space-2);padding:0 var(--space-3);color:#8a8d87;font-size:var(--font-xs);font-weight:400;line-height:var(--line-label)}.settings-section h2.bookgrid-wordmark{font-weight:var(--bookgrid-wordmark-weight);letter-spacing:var(--bookgrid-wordmark-letter-spacing)}.settings-list{overflow:hidden;border:1px solid rgba(32,37,44,.08);border-radius:var(--radius-md);background:#fff}.settings-data-panel{border:1px solid rgba(32,37,44,.08);border-radius:var(--radius-md);padding:var(--space-4);background:#fff}.settings-section-copy,.settings-data-note{margin:0;color:#697078;font-size:var(--font-sm);line-height:var(--line-body)}.settings-data-panel-compact{display:grid;gap:var(--space-3)}.settings-developer-panel{display:grid;gap:var(--space-3);border:1px solid rgba(32,37,44,.08);border-radius:var(--radius-md);padding:var(--space-4);background:#fff}.settings-developer-status{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);color:#20252c;font-size:var(--font-sm);line-height:var(--line-label)}.settings-developer-status strong{font-weight:400;color:#697078;text-align:right}.settings-developer-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-2)}.settings-developer-actions button{min-height:44px;border:1px solid #e2e3df;border-radius:var(--radius-sm);padding:10px 12px;background:#fbfbf8;color:#20252c;font:inherit}.settings-developer-actions button:last-child{grid-column:1 / -1}.settings-save-status{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;overflow:hidden;border:1px solid #ededeb;border-radius:var(--radius-sm);background:#ededeb}.settings-save-status div{display:grid;gap:3px;min-width:0;padding:var(--space-3);background:#fbfbf8}.settings-save-status span,.settings-subsection-header p,.settings-backup-item span{color:#8a8d87;font-size:var(--font-xs);line-height:var(--line-label)}.settings-save-status strong,.settings-backup-item strong{overflow:hidden;color:#20252c;font-size:var(--font-sm);font-weight:400;line-height:var(--line-label);text-overflow:ellipsis;white-space:nowrap}.settings-backup-history,.settings-external-backup{display:grid;gap:var(--space-2);min-width:0}.settings-subsection-header{display:grid;gap:2px;min-width:0}.settings-subsection-header h3{margin:0;color:#20252c;font-size:var(--font-sm);font-weight:400;line-height:var(--line-label)}.settings-subsection-header p{margin:0}.settings-backup-list{display:grid;overflow:hidden;border:1px solid #ededeb;border-radius:var(--radius-sm);background:#fff}.settings-backup-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-3);align-items:center;min-width:0;border-bottom:1px solid #ededeb;padding:var(--space-3)}.settings-backup-item:last-child{border-bottom:0}.settings-backup-item div{display:grid;gap:3px;min-width:0}.settings-backup-item button{min-height:var(--tap-min);border:1px solid #dedede;border-radius:var(--radius-sm);padding:0 var(--space-3);color:#3d454d;background:#fff;font:inherit;font-size:var(--font-xs);line-height:var(--line-button);cursor:pointer}.settings-backup-item button:hover{border-color:#cfcfca;background:#f7f7f4}.settings-backup-toggle{justify-self:start;min-height:var(--tap-min);border:1px solid #dedede;border-radius:var(--radius-sm);padding:0 var(--space-3);color:#3d454d;background:#fff;font:inherit;font-size:var(--font-xs);line-height:var(--line-button);cursor:pointer}.settings-backup-toggle:hover{border-color:#cfcfca;background:#f7f7f4}.settings-data-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;overflow:hidden;margin:var(--space-4) 0;border:1px solid #ededeb;border-radius:var(--radius-sm);background:#ededeb}.settings-data-summary div{min-width:0;padding:var(--space-3);background:#fbfbf8}.settings-data-summary dt{margin:0 0 3px;color:#8a8d87;font-size:var(--font-xs);line-height:var(--line-label)}.settings-data-summary dd{overflow:hidden;margin:0;color:#20252c;font-size:var(--font-sm);line-height:var(--line-label);text-overflow:ellipsis;white-space:nowrap}.settings-data-actions,.settings-import-options{display:flex;flex-wrap:wrap;gap:var(--space-2)}.settings-data-actions{margin:0}.settings-import-options{margin:calc(-1 * var(--space-1)) 0 0}.settings-data-actions button,.settings-import-options button{min-height:var(--tap-min);border:1px solid #dedede;border-radius:var(--radius-md);padding:0 var(--space-4);color:#3d454d;background:#fff;font:inherit;font-size:var(--font-sm);line-height:var(--line-button);cursor:pointer}.settings-data-actions button:hover,.settings-import-options button:hover{border-color:#cfcfca;background:#f7f7f4}.settings-import-options button{min-height:38px;color:#6d737a;font-size:var(--font-xs)}.settings-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:var(--space-4);width:100%;min-height:60px;border:0;border-bottom:1px solid #ededeb;padding:var(--space-3) var(--space-4);color:inherit;background:#fff;font:inherit;text-align:left;text-decoration:none}.settings-row:last-child{border-bottom:0}button.settings-row,a.settings-row{cursor:pointer}button.settings-row:hover,a.settings-row:hover{background:#f8f8f6}.settings-row-copy{display:grid;min-width:0;gap:3px}.settings-row-title{overflow:hidden;color:#20252c;font-size:var(--font-sm);font-weight:400;line-height:var(--line-label);text-overflow:ellipsis;white-space:nowrap}.settings-row-detail{color:#7a8086;font-size:var(--font-xs);line-height:var(--line-label)}.settings-row-value{display:inline-flex;align-items:center;gap:var(--space-2);color:#8a8d87;font-size:var(--font-xs);line-height:var(--line-label);text-align:right;white-space:nowrap}.settings-version-compact{padding:var(--space-1) var(--space-4) var(--space-4);color:#9a9d98}.settings-version-compact p{margin:0;font-size:11px;line-height:1.45}.legal-back{min-height:38px;margin:0 0 var(--space-5);border:1px solid rgba(32,37,44,.1);border-radius:var(--radius-sm);padding:0 var(--space-3);color:#3d454d;background:#fff;font:inherit;font-size:var(--font-sm);line-height:var(--line-button);cursor:pointer}.legal-back:hover{background:#f8f8f6}.legal-updated{display:inline-block;margin:0 0 var(--space-4);color:#8a8d87;font-size:var(--font-xs);line-height:var(--line-label)}.legal-document{display:grid;gap:var(--space-5);border-top:1px solid rgba(32,37,44,.08);padding-top:var(--space-5)}.legal-section h2{margin:0 0 var(--space-2);color:#20252c;font-size:var(--font-md);font-weight:400;line-height:var(--line-heading)}.legal-section p,.legal-section li{color:#4f575f;font-size:var(--font-sm);line-height:var(--line-body)}.legal-section p{margin:0 0 var(--space-3)}.legal-section p:last-child{margin-bottom:0}.legal-section ul{display:grid;gap:var(--space-1);margin:var(--space-2) 0 0;padding-left:1.2em}.shelf-page{position:absolute;z-index:12;top:var(--top-grid-shell-pad);right:var(--top-grid-shell-pad);bottom:var(--top-grid-shell-pad);left:calc(var(--top-grid-shell-pad) + var(--top-grid-sidebar-width) + var(--top-grid-shell-gap));overflow:hidden;color:#1f252b;background:var(--book-grid-background);background-color:var(--book-grid-background)}.shelf-scroll{height:100%;min-height:100%;overflow:auto;padding:var(--space-5) clamp(var(--space-5),5vw,var(--space-8)) calc(140px + env(safe-area-inset-bottom))}.shelf-header{position:relative;z-index:1;max-width:1180px;margin:0 auto var(--space-4);pointer-events:auto}.shelf-toolbar{margin-bottom:var(--space-3)}.shelf-header .library-add-button,.shelf-header .library-data-actions button{pointer-events:auto}.shelf-header .library-data-actions{margin-right:0;margin-left:0}.shelf-header .library-data-actions{display:flex}.shelf-filter-strip{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3);margin-top:var(--space-4)}.shelf-filter-segment{display:inline-flex;gap:2px;border:1px solid rgba(32,37,44,.08);border-radius:999px;padding:3px;background:#ffffffb3}.shelf-filter-segment button,.shelf-label-filter{min-height:40px;border:0;border-radius:999px;padding:0 12px;color:#798087;background:transparent;font:inherit;font-size:12px;line-height:1}.shelf-filter-segment button{cursor:pointer}.shelf-filter-segment button.is-active{color:#252a27;background:#fff;box-shadow:none}.shelf-label-filter{border:1px solid rgba(32,37,44,.08);padding-right:28px;background:#ffffffb3}.shelf-card-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(14px,3.4vw,18px);max-width:1180px;margin:0 auto}.shelf-volume-card{position:relative;display:block;aspect-ratio:.705;min-width:0;overflow:visible;border:0;border-radius:4px;padding:0;background:transparent;color:inherit;cursor:pointer;contain:layout paint;text-align:left}.shelf-volume-card:after{content:none}.shelf-volume-card:focus-visible{outline:2px solid rgba(32,37,44,.42);outline-offset:4px}.shelf-volume{position:absolute;z-index:1;top:0;right:0;bottom:0;left:0;display:block;overflow:visible;border-radius:inherit;pointer-events:none}.shelf-volume-shape{position:absolute;top:0;right:0;bottom:0;left:0;display:block;width:100%;height:100%}.shelf-volume-copy{position:absolute;z-index:4;top:var(--book-cover-copy-top);left:var(--book-cover-copy-left);width:var(--book-cover-copy-width);max-height:var(--book-cover-copy-max-height);overflow:hidden;font-family:var(--font-family-ui);font-size:clamp(10.5px,2.62vw,14px);font-weight:350;line-height:1.27;letter-spacing:0;pointer-events:none}.shelf-volume-title{display:-webkit-box;max-height:2.54em;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow-wrap:anywhere;text-overflow:ellipsis;white-space:normal;word-break:keep-all}.shelf-volume-progress{position:relative;display:block;width:var(--book-cover-progress-width);height:2px;margin-top:6px;overflow:hidden;border-radius:999px;background:var(--shelf-volume-progress-track)}.shelf-volume-progress:after{position:absolute;inset:0 auto 0 0;width:var(--shelf-volume-progress);content:"";background:var(--shelf-volume-progress-fill)}@media (min-width: 720px){.shelf-card-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.shelf-volume-copy{font-size:clamp(10px,1.12vw,13px)}}@media (min-width: 1100px){.shelf-card-grid{grid-template-columns:repeat(7,minmax(0,1fr))}}.bottom-nav{position:fixed;z-index:22;left:50%;bottom:calc(0px - var(--bottom-nav-overscan));display:none;grid-template-columns:repeat(3,minmax(0,1fr));align-items:center;--bottom-nav-overscan: max(8px, env(safe-area-inset-bottom));width:min(430px,calc(100vw - 40px));min-height:calc(74px + var(--bottom-nav-overscan));padding:8px 18px calc(8px + var(--bottom-nav-overscan));border:1px solid rgba(32,37,44,.07);border-radius:var(--radius-full);background:#ffffffe6;box-shadow:none;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);transform:translate(-50%)}.bottom-nav-button{position:relative;display:grid;min-width:var(--tap-min);min-height:58px;place-items:center;border:0;border-radius:var(--radius-full);padding:0;color:#20252c;background:transparent;font:inherit;line-height:1;cursor:pointer}.bottom-nav-button:hover,.bottom-nav-button.is-active{color:#111417}.bottom-nav-button.is-active:after{position:absolute;bottom:5px;width:38px;height:2.5px;border-radius:var(--radius-full);background:currentColor;content:""}.bottom-nav-grid{display:none}.bottom-nav .nav-icon{color:#15191d;transform:translateY(-3px)}.bottom-nav .nav-icon svg{stroke-width:1.65}.add-book-overlay{position:fixed;z-index:28;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;padding:var(--space-5);background:#f7f7f485;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);overflow:hidden;overscroll-behavior:contain}.add-book-sheet{display:flex;flex-direction:column;width:min(560px,calc(100vw - var(--space-8)));height:min(760px,calc(100dvh - var(--space-8)));max-height:min(760px,calc(100dvh - var(--space-8)));min-height:0;overflow:hidden;border:1px solid #e1e1de;border-radius:var(--radius-xl);color:#1d1d1b;background:#fff;box-shadow:none}.add-book-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);padding:var(--space-6) var(--space-6) var(--space-4);border-bottom:1px solid #eeeeeb}.add-book-header>div{min-width:0}.add-book-header p{margin:0 0 var(--space-1);color:#77766f;font-size:var(--font-sm);line-height:var(--line-label)}.add-book-header h2{margin:0;color:#171716;font-size:clamp(24px,4vw,var(--font-2xl));font-weight:400;line-height:var(--line-heading)}.add-book-choice,.add-book-search-form,.add-book-isbn-form{display:flex;flex:1 1 auto;flex-direction:column;gap:var(--space-4);min-height:0;overflow:hidden;padding:var(--space-5) var(--space-6) var(--space-6)}.add-book-choice,.add-book-isbn-form{overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.add-book-search-controls{display:grid;flex:0 0 auto;gap:var(--space-3)}.add-book-choice button{display:grid;gap:var(--space-1);min-height:76px;border:1px solid #dededa;border-radius:var(--radius-lg);padding:var(--space-4);color:#1d1d1b;background:#fff;font:inherit;text-align:left;cursor:pointer}.add-book-choice button:first-child{border-color:#20252c2e;background:#fbfbfa}.add-book-choice button:hover{background:#f8f8f5}.add-book-choice button.add-book-choice-secondary{min-height:0;border-color:transparent;padding:var(--space-2) 0 0;color:#697078;background:transparent;font-size:var(--font-sm);text-align:center}.add-book-choice button.add-book-choice-secondary:hover{color:#1d1d1b;background:transparent}.add-book-choice span{font-size:var(--font-md);font-weight:400;line-height:var(--line-label)}.add-book-choice small,.add-book-help{color:#737a82;font-size:var(--font-sm);line-height:var(--line-label)}.add-book-help{margin:calc(var(--space-2) * -1) 0 0}.add-book-search-shortcuts{margin-top:calc(var(--space-2) * -1)}.add-book-warning{display:grid;gap:var(--space-3);border:1px solid #e4e4e1;border-radius:var(--radius-md);padding:var(--space-4);color:#4f5963;background:#fbfbfa}.add-book-warning-empty{border-style:dashed}.add-book-warning-error{border-color:#bd35282e;color:#6b3a34;background:snow}.add-book-warning p{margin:0;font-size:var(--font-sm);line-height:var(--line-label)}.add-book-recovery-suggestions{display:grid;gap:var(--space-2);min-width:0}.add-book-recovery-suggestions>span{color:#687078;font-size:var(--font-xs);line-height:var(--line-label)}.add-book-status{margin:0;color:#697078;font-size:var(--font-sm);line-height:var(--line-label)}.add-book-empty-search{border:1px dashed #dededa;border-radius:var(--radius-md);padding:var(--space-4);color:#8a8d87;background:#fbfbfa;text-align:center}.add-book-inline-actions,.add-book-actions{display:flex;flex-wrap:wrap;gap:var(--space-3)}.add-book-inline-actions button{min-height:var(--tap-min);border:1px solid #dededa;border-radius:var(--radius-md);padding:0 var(--space-4);color:#3d454d;background:#fff;font:inherit;font-size:var(--font-sm);cursor:pointer}.add-book-inline-actions button:disabled{cursor:default;opacity:.42}.add-book-inline-actions .add-book-primary-action{border-color:#20252c;color:#fff;background:#20252c}.add-book-inline-actions .add-book-primary-action:disabled{border-color:#d8d8d4;color:#8a8d87;background:#f2f2ef}.add-book-actions{display:grid;flex:0 0 auto;grid-template-columns:1fr 1fr}.add-book-search-results{display:flex;flex:1 1 auto;flex-direction:column;align-items:stretch;gap:var(--space-4);min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:0 var(--space-1) var(--space-5) 0;scrollbar-gutter:stable}.add-book-result-list{display:flex;flex:0 0 auto;flex-direction:column;gap:var(--space-3);min-height:auto}.add-book-result-heading{margin:0 0 var(--space-1);color:#707069;font-size:var(--font-xs);font-weight:400;line-height:var(--line-label)}.add-book-result-card{display:grid;grid-template-columns:58px minmax(0,1fr);gap:var(--space-3);align-items:start;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;max-width:100%;min-height:96px;min-width:0;height:auto;border:1px solid #e0e0dc;border-radius:var(--radius-md);padding:var(--space-3);color:#1d1d1b;background:#fff;font:inherit;text-align:left;cursor:pointer;transition:border-color .16s ease,background-color .16s ease,box-shadow .16s ease}.add-book-result-card-local{border-color:#d6ddd6;background:#fbfcfa}.add-book-result-card:hover{background:#f8f8f5;border-color:#d0d0ca;box-shadow:var(--shadow-low)}.add-book-result-card:focus-visible{border-color:#20252c;box-shadow:0 0 0 3px #20252c1f}.add-book-result-cover{display:block;width:58px;height:82px;min-width:58px;overflow:hidden;border:1px solid rgba(32,37,44,.1);border-radius:var(--radius-sm);background:linear-gradient(135deg,#f2f0ea,#dedbd2)}.add-book-result-cover img{width:100%;height:100%;object-fit:cover}.add-book-result-body{display:grid;align-content:start;gap:var(--space-1);min-width:0;min-height:0;overflow:hidden}.add-book-result-title{display:-webkit-box;overflow:hidden;color:#171716;font-size:var(--font-md);font-weight:400;line-height:1.35;word-break:break-word;overflow-wrap:anywhere;-webkit-box-orient:vertical;-webkit-line-clamp:2}.add-book-result-author{display:-webkit-box;overflow:hidden;color:#4f5963;font-size:var(--font-sm);line-height:var(--line-label);word-break:break-word;overflow-wrap:anywhere;-webkit-box-orient:vertical;-webkit-line-clamp:2}.add-book-result-action{margin-top:var(--space-1);color:#8a8d87;font-size:var(--font-xs);line-height:var(--line-label)}.add-book-result-badge{justify-self:start;border:1px solid rgba(62,118,92,.18);border-radius:999px;padding:2px var(--space-2);color:#3e765c;background:#3e765c0f;font-size:11px;line-height:1.35}.add-book-result-meta,.add-book-result-isbn{display:block;overflow:hidden;color:#7b7a74;font-size:var(--font-xs);line-height:var(--line-label);text-overflow:ellipsis;min-width:0;overflow-wrap:anywhere}.add-book-result-isbn{opacity:.72}.editor-overlay{position:fixed;z-index:30;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;overflow:hidden;overscroll-behavior:contain;padding:var(--space-5);background:#f7f7f4ad;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.pro-paywall-overlay{z-index:80;isolation:isolate;contain:layout paint;background:var(--book-grid-background, #f4f3ef);-webkit-backdrop-filter:none;backdrop-filter:none}.book-editor{display:flex;flex-direction:column;width:min(760px,calc(100vw - var(--space-8)));max-width:calc(100vw - var(--space-8));max-height:calc(100vh - var(--space-8));overflow:hidden;overflow-x:hidden;border:1px solid #e1e1de;border-radius:var(--radius-xl);color:#1d1d1b;background:#fff;box-shadow:none}.editor-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);min-width:0;padding:var(--space-6) var(--space-6) var(--space-4);border-bottom:1px solid #eeeeeb}.editor-heading{display:flex;align-items:flex-start;gap:var(--space-3);min-width:0}.editor-heading>div{min-width:0}.editor-icon{display:grid;width:var(--tap-min);height:var(--tap-min);place-items:center;border:1px solid #dededa;border-radius:var(--radius-md);color:#2b2b28;background:#f7f7f4;font-size:var(--font-md);line-height:1}.editor-header h2{margin:0;color:#171716;font-size:clamp(28px,4vw,var(--font-2xl));font-weight:400;line-height:var(--line-heading);letter-spacing:0}.editor-header p{margin:var(--space-1) 0 0;color:#7b7a74;font-size:var(--font-sm);line-height:var(--line-label)}.editor-close{display:grid;flex:0 0 auto;width:var(--tap-min);height:var(--tap-min);place-items:center;border:1px solid #dededa;border-radius:50%;color:#1d1d1b;background:#fff;font:inherit;font-size:var(--font-xl);line-height:1;cursor:pointer}.editor-close:hover{background:#f4f4f0}.editor-body{display:grid;gap:var(--space-5);min-width:0;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;padding:var(--space-5) var(--space-6) var(--space-6)}.editor-field{display:grid;gap:var(--space-2);min-width:0}.editor-field>span{color:#707069;font-size:14px;font-weight:400;line-height:var(--line-label)}.editor-field-help{margin:calc(-1 * var(--space-1)) 0 0;color:#7b7a74;font-size:var(--font-sm);line-height:var(--line-label)}.editor-field-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4);min-width:0}.editor-book-meta{display:grid;grid-template-columns:88px minmax(0,1fr);gap:var(--space-4);align-items:end;min-width:0}.editor-bibliography{min-width:0;overflow:hidden;border:1px solid #e7e7e3;border-radius:var(--radius-md);background:#fbfbfa}.editor-bibliography summary{min-height:44px;padding:var(--space-3) var(--space-4);color:#707069;font-size:var(--font-sm);line-height:var(--line-label);cursor:pointer}.editor-bibliography .editor-book-meta{padding:0 var(--space-4) var(--space-4)}.editor-book-meta-fields{display:grid;gap:var(--space-2);min-width:0}.editor-book-meta-fields p{margin:0;color:#7b7a74;font-size:var(--font-sm);line-height:var(--line-label)}.editor-cover-thumbnail{display:block;width:88px;height:124px;overflow:hidden;border:1px solid rgba(32,37,44,.1);border-radius:var(--radius-md);background:#f2f0ea;object-fit:cover}.editor-cover-thumbnail-color{box-shadow:inset 0 0 0 1px #ffffff59}.editor-isbn-input{height:44px;color:#4f5963;font-size:var(--font-sm)}.editor-progress-card{display:grid;gap:var(--space-2);border:1px solid #e4e4e1;border-radius:var(--radius-md);padding:var(--space-4);background:#fbfbfa}.editor-progress-head{display:flex;justify-content:space-between;gap:var(--space-4);color:#20252c;font-size:var(--font-sm);line-height:var(--line-label)}.editor-progress-head strong{font-weight:500}.editor-progress-head span{color:#707069}.editor-progress-card p{margin:0;color:#68727c;font-size:var(--font-sm);line-height:var(--line-label)}.editor-input,.editor-textarea{width:100%;max-width:100%;min-width:0;border:1px solid #d8d8d4;border-radius:var(--radius-md);color:#181816;background:#fff;font:inherit;font-size:var(--font-md);line-height:var(--line-body);outline:none}.editor-input{height:var(--control-height);padding:0 var(--space-4)}.editor-textarea{min-height:120px;resize:vertical;padding:var(--space-3) var(--space-4);line-height:var(--line-body)}.editor-input:focus,.editor-textarea:focus{border-color:#1d1d1b;box-shadow:0 0 0 3px #1d1d1b14}.editor-color-controls{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-3);width:100%;max-width:100%;min-width:0;margin-top:0}.editor-color-main-control{position:relative;display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);width:100%;max-width:100%;min-width:0;min-height:52px;overflow:hidden;border:1px solid rgba(30,29,25,.16);border-radius:var(--radius-md);padding:0 var(--space-4);box-sizing:border-box;touch-action:none}.editor-color-main-label,.editor-color-main-code{position:relative;z-index:1;min-width:0;pointer-events:none}.editor-color-main-label{font-size:14px;line-height:var(--line-button)}.editor-color-main-code{flex:0 0 auto;opacity:.72;font-size:13px;line-height:var(--line-label);letter-spacing:0;text-transform:uppercase}.editor-color-swatch-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(40px,1fr));gap:8px;width:100%;max-width:100%;min-width:0}.editor-color-swatch{position:relative;min-width:0;min-height:42px;border:1px solid rgba(30,29,25,.14);border-radius:14px;padding:0;box-sizing:border-box;color:transparent;cursor:pointer;touch-action:manipulation}.editor-color-swatch:after{content:"";position:absolute;top:6px;right:6px;bottom:6px;left:6px;border:1px solid rgba(255,255,255,.46);border-radius:10px;opacity:0}.editor-color-swatch.is-selected{border-color:#1e1d19c7;outline:2px solid rgba(30,29,25,.12);outline-offset:2px}.editor-color-swatch.is-selected:after{opacity:1}.editor-color-swatch:focus-visible{outline:2px solid rgba(32,37,44,.2);outline-offset:2px}.editor-color-swatch span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.editor-status-control{display:grid;grid-template-columns:1fr 1fr;border:1px solid #d8d8d4;border-radius:var(--radius-md);padding:var(--space-1);background:#f7f7f4}.editor-status-option{min-height:var(--tap-min);border:0;border-radius:var(--radius-sm);color:#5f5e58;background:transparent;font:inherit;cursor:pointer}.editor-status-option.is-selected{color:#171716;background:#fff;box-shadow:none}.editor-label-actions{display:flex;flex-wrap:wrap;gap:var(--space-2);max-width:100%;overflow-x:hidden;margin-top:var(--space-3)}.editor-label-actions button{min-width:0;min-height:34px;border:1px solid #dededa;border-radius:999px;padding:0 var(--space-3);color:#3d454d;background:#fff;font:inherit;font-size:var(--font-xs);cursor:pointer}.editor-label-actions button:disabled{color:#b3b4af;cursor:default}.editor-delete-button{justify-self:center;border:0;min-height:var(--tap-min);padding:var(--space-2) var(--space-4);color:#bd3528;background:transparent;font:inherit;font-weight:400;cursor:pointer}.editor-delete-button:hover{color:#98251d}.editor-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-3);min-width:0;padding:var(--space-4) var(--space-6) var(--space-5);border-top:1px solid #eeeeeb;background:#fffffff5}.editor-cancel,.editor-save{min-width:0;min-height:var(--control-height);border-radius:var(--radius-md);font:inherit;font-weight:500;cursor:pointer}.editor-cancel{border:1px solid #d8d8d4;color:#1d1d1b;background:#fff}.editor-save{border:1px solid #171716;color:#fff;background:#171716}.editor-save:disabled{border-color:#b9b9b3;background:#b9b9b3;cursor:not-allowed}.pro-paywall{display:flex;flex-direction:column;width:min(540px,calc(100vw - var(--space-8)));max-height:calc(100vh - var(--space-8));overflow:hidden;border:1px solid #e1e1de;border-radius:var(--radius-xl);color:#1d1d1b;background:#fff;box-shadow:none}.pro-paywall-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);padding:var(--space-7) var(--space-6) var(--space-5);border-bottom:1px solid #eeeeeb}.pro-paywall-header p{margin:0 0 var(--space-2);color:#8a8d87;font-size:var(--font-xs);line-height:var(--line-label)}.pro-paywall-header h2{margin:0 0 var(--space-2);color:#171716;font-size:clamp(28px,4vw,36px);font-weight:400;line-height:var(--line-heading)}.pro-paywall-subtitle{display:block;color:#3b3c38;font-size:var(--font-lg);line-height:var(--line-heading)}.pro-paywall-body{display:grid;gap:var(--space-5);overflow:auto;-webkit-overflow-scrolling:touch;padding:var(--space-6) var(--space-6)}.pro-paywall-lead{margin:0;color:#5f625e;font-size:var(--font-md);line-height:var(--line-body)}.pro-paywall-price{display:grid;justify-items:start;gap:var(--space-2);border:1px solid #e4e4e1;border-radius:var(--radius-md);padding:var(--space-5);background:#fbfbf9}.pro-paywall-price-product,.pro-paywall-regular-price,.pro-paywall-price small{color:#7b7a74;font-size:var(--font-sm);line-height:var(--line-label)}.pro-paywall-price-kind{display:inline-flex;align-items:center;min-height:24px;border:1px solid #e4e4e1;border-radius:999px;padding:0 var(--space-3);color:#4f514c;background:#fff;font-size:14px;line-height:var(--line-label)}.pro-paywall-price strong{color:#171716;font-size:clamp(36px,7vw,44px);font-weight:500;line-height:.98;letter-spacing:0}.pro-paywall-regular-price{color:#8e8b83}.pro-paywall-availability{margin:0;border:1px solid #e8e3d7;border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);color:#6b665d;background:#fbfaf6;font-size:var(--font-sm);line-height:var(--line-body)}.pro-paywall-purchase-status{margin:0;color:#666963;font-size:var(--font-sm);line-height:var(--line-body)}.pro-paywall-divider{height:1px;background:#eeeeeb}.pro-paywall-scope{margin:0;color:#6b6d68;font-size:var(--font-sm);line-height:var(--line-body)}.pro-paywall-count{margin:0;color:#8a8d87;font-size:var(--font-sm);line-height:var(--line-label)}.pro-paywall-actions{display:grid;grid-template-columns:1fr;gap:var(--space-2);padding:var(--space-4) var(--space-6) var(--space-5);border-top:1px solid #eeeeeb;background:#fffffff5}.pro-paywall-primary{min-height:52px;border:1px solid #171716;border-radius:var(--radius-md);color:#fff;background:#171716;font:inherit;font-weight:500;cursor:pointer}.pro-paywall-primary:disabled{border-color:#b9b9b3;background:#b9b9b3;cursor:not-allowed}.pro-paywall-restore{min-height:var(--tap-min);border:0;border-radius:var(--radius-md);color:#5f625e;background:transparent;font:inherit;cursor:pointer}.pro-paywall-restore:disabled{cursor:not-allowed;opacity:.72}.pro-paywall-later{min-height:var(--tap-min);border:0;color:#707069;background:transparent;font:inherit;cursor:pointer}.backup-import-overlay{position:fixed;z-index:29;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;padding:var(--space-5);background:#f7f7f494;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);overflow:hidden;overscroll-behavior:contain}.backup-import-sheet{display:flex;flex-direction:column;width:min(560px,calc(100vw - var(--space-8)));max-height:calc(100dvh - var(--space-8));overflow:hidden;border:1px solid rgba(32,37,44,.09);border-radius:var(--radius-xl);color:#1d1d1b;background:#fff;box-shadow:none}.backup-import-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);padding:var(--space-5) var(--space-6) var(--space-4);border-bottom:1px solid #eeeeeb}.backup-import-header p{margin:0 0 var(--space-1);color:#8a8d87;font-size:var(--font-xs);line-height:var(--line-label)}.backup-import-header h2{margin:0;color:#171716;font-size:clamp(24px,4vw,32px);font-weight:400;line-height:var(--line-heading)}.backup-import-body{display:grid;gap:var(--space-4);overflow:auto;-webkit-overflow-scrolling:touch;min-height:0;padding:var(--space-5) var(--space-6)}.backup-import-lead,.backup-import-note,.backup-import-warning p{margin:0;color:#697078;font-size:var(--font-sm);line-height:var(--line-body)}.backup-import-summary,.backup-import-result{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;overflow:hidden;margin:0;border:1px solid #ededeb;border-radius:var(--radius-sm);background:#ededeb}.backup-import-summary div,.backup-import-result div{min-width:0;padding:var(--space-3);background:#fbfbf8}.backup-import-summary dt,.backup-import-result dt{margin:0 0 3px;color:#8a8d87;font-size:var(--font-xs);line-height:var(--line-label)}.backup-import-summary dd,.backup-import-result dd{display:grid;min-width:0;overflow:hidden;margin:0;color:#20252c;font-size:var(--font-sm);line-height:var(--line-label);text-overflow:ellipsis;white-space:nowrap}.backup-import-summary small{margin-top:2px;color:#8a8d87;font-size:var(--font-xs);line-height:var(--line-label)}.backup-import-mode{display:grid;gap:var(--space-2)}.backup-import-mode button{display:grid;gap:3px;min-height:58px;border:1px solid #dedede;border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);color:#3d454d;background:#fff;font:inherit;text-align:left;cursor:pointer}.backup-import-mode button.is-selected{border-color:#20252c57;background:#f8f8f5}.backup-import-mode span{color:#20252c;font-size:var(--font-sm);line-height:var(--line-label)}.backup-import-mode small{color:#8a8d87;font-size:var(--font-xs);line-height:var(--line-label)}.backup-import-warning{border:1px solid rgba(189,53,40,.16);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);background:#fff8f6eb}.backup-import-warning p{color:#8f3429}.backup-import-actions{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3);padding:var(--space-4) var(--space-6) var(--space-5);border-top:1px solid #eeeeeb;background:#fffffff5}.backup-import-actions button{min-height:var(--control-height);border-radius:var(--radius-md);font:inherit;font-weight:500;cursor:pointer}.backup-import-actions button:first-child{border:1px solid #d8d8d4;color:#1d1d1b;background:#fff}.backup-import-actions .is-primary{border:1px solid #171716;color:#fff;background:#171716}.backup-import-actions .is-danger{border:1px solid #7a1e17;color:#fff;background:#7a1e17}.add-book-button{position:fixed;z-index:20;right:clamp(18px,4vw,42px);bottom:calc(102px + env(safe-area-inset-bottom));min-height:44px;border:1px solid rgba(30,29,25,.16);border-radius:var(--radius-sm);padding:0 var(--space-4);color:#1e1d19;background:#ffffffdb;box-shadow:none;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);font:inherit;font-size:15px;font-weight:500;cursor:pointer}.add-book-button:hover{background:#f3f0e9}.grid-mobile-add-button,.mobile-app-chrome{display:none}.json-import-input{position:fixed;width:1px;height:1px;opacity:0;pointer-events:none}@media (max-width: 720px){.viewer-shell{height:100dvh;min-height:100dvh}.viewer-header{align-items:flex-start;padding:var(--space-4)}.viewer-status,.top-grid-shell{display:none}.mobile-app-chrome{position:fixed;z-index:24;top:calc(10px + env(safe-area-inset-top));right:14px;left:14px;display:block;pointer-events:none}.mobile-top-bar{display:flex;align-items:center;justify-content:space-between;min-height:56px;border:1px solid rgba(32,37,44,.07);border-radius:22px;padding:7px 10px 7px 18px;color:#20252c;background:#ffffffe6;box-shadow:none;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);pointer-events:auto}.mobile-top-title{display:grid;min-width:0;gap:1px}.mobile-top-title span,.mobile-top-title small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mobile-top-title span{color:#20252c;font-size:15px;font-weight:400;line-height:1.25}.mobile-top-title .bookgrid-wordmark{font-weight:var(--bookgrid-wordmark-weight);letter-spacing:var(--bookgrid-wordmark-letter-spacing)}.mobile-top-title small{color:#8a8d87;font-size:var(--font-xs);font-weight:400;line-height:1.35}.mobile-top-actions{display:flex;flex:0 0 auto;align-items:center;justify-content:flex-end;gap:10px;min-width:98px}.mobile-top-icon-button{display:grid;flex:0 0 44px;width:44px;height:44px;place-items:center;border:0;border-radius:var(--radius-full);color:#20252c;background:transparent;font:inherit;line-height:1;cursor:pointer;touch-action:manipulation}.mobile-top-icon-button:before{grid-area:1 / 1;width:30px;height:30px;border:1px solid transparent;border-radius:var(--radius-full);content:"";transition:background-color .16s ease,border-color .16s ease}.mobile-top-icon-button:hover:before{border-color:#20252c0e;background:#20252c07}.mobile-add-icon,.mobile-menu-symbol{grid-area:1 / 1;position:relative;z-index:1;display:block;width:18px;height:18px;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round}.mobile-add-icon{width:17px;height:17px;stroke-width:1.35}.mobile-menu-toggle{color:#20252c}.mobile-menu-toggle:before{border-color:transparent;background:transparent}.mobile-menu-toggle:hover:before,.mobile-menu-toggle:active:before,.mobile-menu-toggle:focus-visible:before{border-color:transparent;background:transparent}.mobile-menu-toggle:active .mobile-menu-symbol{opacity:.62}.mobile-menu-symbol{width:20px;height:20px;stroke-width:1.35}.mobile-menu-overlay{position:fixed;z-index:27;top:0;right:0;bottom:0;left:0;display:flex;align-items:flex-start;justify-content:flex-end;padding:calc(78px + env(safe-area-inset-top)) 14px 0;background:#f7f7f447;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);overscroll-behavior:contain;pointer-events:auto;animation:mobileMenuBackdropIn .18s ease-out both}.mobile-menu-overlay.is-closing{animation:mobileMenuBackdropOut .15s ease-out both}.mobile-menu-panel{width:min(312px,calc(100vw - 28px));max-height:min(72dvh,620px);overflow:auto;overflow-x:hidden;border:1px solid rgba(39,37,32,.08);border-radius:20px;padding:8px;color:#22262a;background:#fffffff7;box-shadow:none;overscroll-behavior:contain;transform-origin:top right;animation:mobileMenuPanelIn .18s ease-out both}.mobile-menu-overlay.is-closing .mobile-menu-panel{animation:mobileMenuPanelOut .15s ease-out both}@keyframes mobileMenuBackdropIn{0%{opacity:0}to{opacity:1}}@keyframes mobileMenuBackdropOut{0%{opacity:1}to{opacity:0}}@keyframes mobileMenuPanelIn{0%{opacity:0;transform:translate3d(0,-6px,0) scale(.98)}to{opacity:1;transform:translateZ(0) scale(1)}}@keyframes mobileMenuPanelOut{0%{opacity:1;transform:translateZ(0) scale(1)}to{opacity:0;transform:translate3d(0,-4px,0) scale(.98)}}.mobile-menu-panel .top-grid-sidebar-head{display:none}.mobile-menu-panel .top-grid-pages,.mobile-menu-panel .top-grid-section,.mobile-menu-panel .top-grid-labels,.mobile-menu-panel .mobile-menu-data-actions{display:grid;gap:2px;margin:0;border-bottom:1px solid rgba(37,42,39,.07);padding:6px 0}.mobile-menu-panel .top-grid-pages{grid-template-columns:1fr}.mobile-menu-panel .top-grid-labels{margin-top:0}.mobile-menu-panel .mobile-menu-data-actions{border-top:0}.mobile-menu-panel .top-grid-labels-head{min-height:32px;padding:0 12px;color:#8a8d87;font-size:12px;line-height:var(--line-label)}.mobile-menu-panel .top-grid-pages button,.mobile-menu-panel .top-grid-section button,.mobile-menu-panel .top-grid-labels button,.mobile-menu-panel .mobile-menu-data-actions button{display:grid;align-items:center;min-height:44px;border:0;border-radius:12px;padding:0 12px;color:#4f575f;background:transparent;font-size:14px;line-height:var(--line-button);text-align:left}.mobile-menu-panel .top-grid-pages button{grid-template-columns:28px minmax(0,1fr) auto;gap:10px;justify-items:start}.mobile-menu-panel .top-grid-section button,.mobile-menu-panel .top-grid-labels button{grid-template-columns:16px minmax(0,1fr) auto;gap:10px}.mobile-menu-panel .top-grid-pages button:hover,.mobile-menu-panel .top-grid-section button:hover,.mobile-menu-panel .top-grid-labels button:hover,.mobile-menu-panel .mobile-menu-data-actions button:hover{color:#20252c;background:#252a270b}.mobile-menu-panel .top-grid-pages button.is-active,.mobile-menu-panel .top-grid-section button.is-active,.mobile-menu-panel .top-grid-labels button.is-active{color:#20252c;background:#252a270e}.mobile-menu-panel .top-grid-pages button.is-active:after{position:static;grid-column:3;justify-self:end;width:5px;height:5px;border-radius:var(--radius-full);background:currentColor;content:""}.mobile-menu-panel .top-grid-page-label{display:block;min-width:0;overflow:hidden;font-size:14px;line-height:var(--line-button);text-overflow:ellipsis;white-space:nowrap}.mobile-menu-panel .top-grid-pages .nav-icon{width:22px;height:22px}.mobile-menu-panel .top-grid-pages .nav-icon svg{width:22px;height:22px;stroke-width:1.8}.mobile-menu-panel .top-grid-pages .nav-icon-grid{grid-template-columns:repeat(3,4px);grid-template-rows:repeat(3,4px);gap:3px;width:22px;height:22px}.mobile-menu-panel .top-grid-pages .nav-icon-grid span{width:4px;height:4px}.mobile-menu-panel .top-grid-label-dot{box-shadow:none}.mobile-menu-panel .top-grid-section strong,.mobile-menu-panel .top-grid-labels strong{color:#a7aaa4;font-size:12px;font-weight:400}.mobile-menu-panel .top-grid-labels .top-grid-new-label{margin-top:2px}.mobile-menu-panel .top-grid-pro-panel{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;min-height:46px;margin:6px 0 0;border:0;border-radius:12px;padding:0 12px;background:transparent}.mobile-menu-panel .top-grid-pro-panel:hover{background:#252a270b}.mobile-menu-panel .top-grid-pro-panel span,.mobile-menu-panel .top-grid-pro-panel strong{font-size:14px;line-height:var(--line-button)}.mobile-menu-panel .top-grid-pro-panel strong{color:#8a8d87;justify-self:end}.bottom-nav-grid{display:grid}.grid-mobile-add-button{display:none}.canvas-stage{position:fixed;top:0;right:0;bottom:0;left:0;--grid-interaction-top: 0px;--grid-interaction-right: 0px;--grid-interaction-bottom: 0px;--grid-interaction-left: 0px;width:100%;height:100dvh;min-height:100dvh;background:var(--grid-background);background-color:var(--grid-background)}.grid-fixed-ui-layer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:21;width:100%;height:100dvh;min-height:100dvh}.grid-fixed-ui-frame{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100dvh;min-height:100dvh}.library-page,.shelf-page,.settings-page,.legal-page{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden}.grid-zoom-viewport{inset:calc(0px - var(--grid-safe-padding-y)) calc(0px - var(--grid-safe-padding-x))}.grid-camera-button{position:absolute;right:20px;bottom:calc(154px + env(safe-area-inset-bottom));width:var(--tap-min);height:var(--tap-min)}.grid-camera-button svg{width:19px;height:19px}.grid-reorder-controls{right:18px;bottom:calc(92px + env(safe-area-inset-bottom));left:18px}.grid-delete-overlay{padding:max(18px,calc(10px + env(safe-area-inset-top))) 12px max(18px,calc(10px + env(safe-area-inset-bottom)))}.grid-delete-sheet{width:min(420px,calc(100vw - 24px));max-height:calc(100dvh - max(18px,calc(10px + env(safe-area-inset-top))) - max(18px,calc(10px + env(safe-area-inset-bottom))))}.grid-delete-header{padding:var(--space-5) var(--space-4) var(--space-4)}.grid-delete-header h2{font-size:var(--font-lg)}.grid-delete-body{padding:var(--space-5) var(--space-4)}.grid-delete-actions{padding:var(--space-4)}.viewer-canvas{width:100%;height:100%}.viewer-header h1{font-size:28px}.library-scroll{padding:calc(88px + env(safe-area-inset-top)) var(--space-4) 112px}.settings-scroll,.legal-scroll{padding:calc(88px + env(safe-area-inset-top)) var(--space-4) calc(124px + env(safe-area-inset-bottom))}.settings-header h1,.legal-header h1{font-size:32px}.settings-save-status,.settings-data-summary,.settings-backup-item{grid-template-columns:1fr}.settings-backup-item button,.settings-backup-toggle,.settings-data-actions button,.settings-import-options button{width:100%}.settings-row{grid-template-columns:minmax(0,1fr);align-items:start;gap:var(--space-2);min-height:58px}.settings-row-title{white-space:normal}.settings-row-value{justify-content:flex-start;text-align:left;white-space:normal}.library-toolbar{margin-bottom:var(--space-3)}.library-add-button{width:52px;height:52px;font-size:28px}.shelf-scroll{padding:calc(88px + env(safe-area-inset-top)) 20px calc(130px + env(safe-area-inset-bottom))}.shelf-header{padding:0;margin-bottom:18px}.shelf-toolbar{margin-bottom:10px}.shelf-header .library-data-actions{display:flex;margin-top:0}.grid-snapshot-overlay{align-items:center;padding:max(18px,calc(10px + env(safe-area-inset-top))) 12px max(18px,calc(10px + env(safe-area-inset-bottom)));background:#f4f3efeb}.grid-snapshot-sheet{width:min(420px,calc(100vw - 24px));max-height:calc(100dvh - max(18px,calc(10px + env(safe-area-inset-top))) - max(18px,calc(10px + env(safe-area-inset-bottom))));border-radius:24px}.grid-snapshot-header{align-items:center;padding:16px 16px 10px}.grid-snapshot-header h2{font-size:18px}.grid-snapshot-body{gap:10px;padding:0 16px 16px}.grid-snapshot-preview{width:auto;height:min(54dvh,470px);max-width:100%;aspect-ratio:9 / 16;border-radius:18px}.grid-snapshot-actions{gap:8px}.library-card{grid-template-columns:84px 1fr;gap:var(--space-4);border-radius:var(--radius-lg);padding:var(--space-4)}.library-cover{width:76px;height:auto}.library-card-title{font-size:17px;line-height:1.45;white-space:normal}.library-progress-line{font-size:14px}.bottom-nav{display:grid;--bottom-nav-overscan: max(10px, env(safe-area-inset-bottom));width:min(360px,calc(100vw - 28px));min-height:calc(68px + var(--bottom-nav-overscan));padding:7px 14px calc(7px + var(--bottom-nav-overscan))}.app-status-banner{right:var(--space-4);bottom:calc(102px + env(safe-area-inset-bottom))}.add-book-overlay{align-items:end;padding:0}.add-book-sheet{width:100vw;max-height:100dvh;height:100dvh;border-right:0;border-bottom:0;border-left:0;border-radius:var(--radius-xl) var(--radius-xl) 0 0}.add-book-header{padding:max(var(--space-6),calc(var(--space-4) + env(safe-area-inset-top))) var(--space-4) var(--space-5)}.add-book-choice,.add-book-search-form,.add-book-isbn-form{padding-right:var(--space-4);padding-left:var(--space-4);padding-bottom:calc(var(--space-6) + env(safe-area-inset-bottom));scroll-padding-bottom:calc(var(--space-6) + env(safe-area-inset-bottom))}.add-book-result-list{gap:var(--space-2)}.add-book-search-results{min-height:0}.add-book-result-card{grid-template-columns:54px minmax(0,1fr);gap:var(--space-3);min-height:88px;padding:10px}.add-book-result-cover{width:54px;height:76px;min-width:54px}.editor-overlay{align-items:stretch;padding:0;background:#fff;-webkit-backdrop-filter:none;backdrop-filter:none}.pro-paywall{width:100vw;max-height:none;height:100dvh;border:0;border-radius:0;box-shadow:none}.pro-paywall-header{padding:max(var(--space-6),calc(var(--space-4) + env(safe-area-inset-top))) var(--space-4) var(--space-4)}.pro-paywall-header h2{font-size:28px}.pro-paywall-body{padding:var(--space-5) var(--space-4)}.pro-paywall-actions{padding:var(--space-4) var(--space-4) max(var(--space-4),calc(var(--space-2) + env(safe-area-inset-bottom)))}.pro-paywall-price{grid-template-columns:minmax(0,1fr)}.pro-paywall-price strong{grid-row:auto}.backup-import-overlay{align-items:end;padding:0}.backup-import-sheet{width:100vw;max-height:calc(100dvh - 1px);height:calc(100dvh - 1px);border-right:0;border-bottom:0;border-left:0;border-radius:var(--radius-xl) var(--radius-xl) 0 0}.backup-import-header{padding:var(--space-5) var(--space-4) var(--space-4)}.backup-import-header h2{font-size:28px}.backup-import-body{padding:var(--space-5) var(--space-4)}.backup-import-summary,.backup-import-result{grid-template-columns:1fr}.backup-import-actions{padding:var(--space-4) var(--space-4) calc(var(--space-4) + env(safe-area-inset-bottom))}.backup-import-actions button{min-width:0}.editor-overlay{align-items:center;padding:max(10px,env(safe-area-inset-top)) 12px max(10px,env(safe-area-inset-bottom))}.book-editor{width:min(100%,480px);max-width:calc(100vw - 24px);max-height:calc(100dvh - 20px);border-radius:var(--radius-xl)}.editor-header{padding:max(var(--space-6),calc(var(--space-4) + env(safe-area-inset-top))) var(--space-4) var(--space-4)}.editor-header h2{font-size:28px}.editor-body{gap:var(--space-4);padding:var(--space-4)}.editor-field-row{grid-template-columns:1fr;gap:var(--space-3)}.editor-book-meta{grid-template-columns:76px minmax(0,1fr);gap:var(--space-3)}.editor-cover-thumbnail{width:76px;height:106px}.editor-color-controls{grid-template-columns:minmax(0,1fr)}.editor-color-main-control{min-height:50px}.editor-actions{position:sticky;bottom:0;padding:var(--space-3) var(--space-4) calc(var(--space-4) + env(safe-area-inset-bottom))}.add-book-button{right:16px;bottom:calc(112px + env(safe-area-inset-bottom))}}
