.has-library-grid>.room-experience,.has-library-grid>.room-bottom,.has-library-grid>.below-room{display:none!important}
.library-grid-view{container-type:inline-size;flex:none;min-width:0;width:100%;padding:8px 0 0}
#libraryView.has-library-grid{scrollbar-gutter:stable}
.app-shell main:has(#libraryView.has-library-grid){padding-inline:0}
.app-shell main:has(#libraryView.has-library-grid)>.page-heading{padding-inline:20px}
.app-shell.app-preview[data-active-tab="library"] #libraryView.has-library-grid{overflow-y:auto;overflow-x:hidden;overscroll-behavior-y:contain;touch-action:pan-y;padding:12px 0 0;scroll-padding-block:12px}
@media(min-width:761px){
  .app-shell[data-preview="desktop"][data-active-tab="library"] #libraryView.has-library-grid{overflow-y:auto;overflow-x:hidden;overscroll-behavior-y:contain;scrollbar-gutter:stable;touch-action:pan-y;padding:12px 0 0;scrollbar-width:thin;scrollbar-color:#ad8059 #eadac4}
}
:root .app-shell .sidebar .sidebar-room-view button{flex-direction:column;gap:5px;min-height:48px}
.library-grid-view label{display:flex;flex-direction:column;gap:4px;min-width:0;font-size:10px;font-weight:500;line-height:1.4;color:var(--muted,#777)}
.library-grid-view select{display:block;width:100%;height:36px;min-width:0;margin:0;padding:0 22px 0 9px;border:1px solid var(--line,#ddd);border-radius:8px;background-color:var(--paper,#fffdf8);color:var(--ink);font:400 12px var(--sans);cursor:pointer}
.library-grid-toolbar{display:grid;grid-template-columns:minmax(110px,1fr) repeat(4,minmax(0,110px));align-items:end;gap:10px;margin-inline:12px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--paper)}
.library-grid-select-trigger{display:none}
.library-grid-select-menu{position:fixed;z-index:1500;box-sizing:border-box;overflow-y:auto;padding:5px;border:1px solid var(--line);border-radius:12px;background:var(--paper);color:var(--ink);box-shadow:0 10px 30px #001c6026;overscroll-behavior:contain}
.library-grid-select-menu button{display:block;width:100%;min-height:40px;padding:10px 12px;border-radius:8px;text-align:left;font:400 13px var(--sans);color:var(--ink);background:transparent}
.library-grid-select-menu button:is(:hover,:focus-visible,[aria-selected="true"]){background:var(--accent-soft);color:var(--accent)}
.library-grid-search-toggle{display:none}
.library-grid-display-toggle{display:flex;align-items:center;justify-content:center;gap:6px;height:36px;min-width:0;padding:0 8px;border:1px solid var(--line);border-radius:8px;background:var(--paper);color:var(--ink);font-size:12px}
.library-grid-display-toggle .icon{width:15px;height:15px;transform:perspective(100px) rotateY(-28deg)}
.library-grid-display-toggle[aria-pressed="true"]{background:var(--accent-soft);color:var(--accent);border-color:var(--accent-border)}
.library-grid-toolbar .search-field{display:flex;flex-direction:row;align-items:center;gap:10px;width:100%;min-width:0;height:36px;min-height:36px;padding:0 10px;border:1px solid var(--line);border-radius:8px;background:var(--paper);color:var(--muted)}
.library-grid-toolbar .search-field input{display:block;flex:1;width:100%;min-width:0;height:100%;padding:0;border:0;outline:none;background:transparent;color:var(--ink);font:400 13px var(--sans)}
.library-grid-toolbar .search-field:focus-within{outline:2px solid var(--accent);outline-offset:2px}
.library-grid-view select:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.library-grid-toolbar .search-field .icon{position:static;transform:none;flex:0 0 17px;width:17px;height:17px}
.library-grid-count{font-size:11px;color:var(--muted,#777);margin:10px 12px}
.library-grid-shelves{--shelf-back:var(--shelf-base-back,#eadac4);--shelf-edge-high:var(--shelf-base-high,#d9b58c);--shelf-edge-mid:var(--shelf-base-mid,#c39a70);--shelf-edge-dark:var(--shelf-base-dark,#805333);--shelf-ledge-paint:linear-gradient(var(--shelf-edge-high),var(--shelf-edge-mid) 25%,var(--shelf-edge-dark) 28%,var(--shelf-edge-mid) 85%,var(--shelf-edge-dark));--columns:var(--large-columns);--large-columns:8;--medium-columns:11;--small-columns:15;display:grid;grid-template-columns:repeat(var(--columns),minmax(0,1fr));padding:0 14px 18px;border-radius:14px;background:linear-gradient(90deg,#30201a18,transparent 12%,transparent 88%,#30201a18),var(--shelf-back);box-shadow:inset 0 1px 0 #fff9,0 8px 28px #38281c13;overflow:hidden}
.library-grid-slot{container-type:inline-size;position:relative;min-width:0;padding:24px 12px 0;display:flex;align-items:end;border-bottom:20px solid var(--shelf-edge-mid);border-image:var(--shelf-ledge-paint) 1;box-shadow:0 12px 14px -10px #352217aa;background:var(--shelf-row-shading,linear-gradient(180deg,#00000024,transparent 34%,#fff3 96%,#00000028))}
.library-grid-book{display:flex;flex-direction:column;width:100%;min-width:0;padding:0;color:#3c2c24;text-align:left;background:none;border:0;cursor:pointer}
.library-grid-book .cover-art{position:relative;width:100%;aspect-ratio:2/3;height:auto;border-radius:3px 7px 7px 3px;box-shadow:4px 5px 0 -2px #e9dfcd,7px 10px 14px #30201655,inset 4px 0 5px #0003;transition:transform .2s,box-shadow .2s;overflow:hidden}
.library-grid-book .cover-art img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.library-grid-book.is-cover-loading .library-grid-jacket{visibility:hidden}
.library-grid-book .cover-art.has-real-cover::before,.library-grid-book .cover-art.has-real-cover::after{display:none}
@media(hover:hover) and (pointer:fine){.library-grid-book:hover .cover-art{transform:translateY(-7px) rotate(-1deg);box-shadow:4px 5px 0 -2px #e9dfcd,9px 18px 20px #30201655}}
.library-grid-book.is-touch-preview .cover-art{transform:translateY(-10px) scale(1.06);box-shadow:4px 5px 0 -2px #e9dfcd,10px 20px 22px #30201666}
.library-grid-book:focus-visible{outline:3px solid #6f597e;outline-offset:6px;border-radius:4px}
.library-grid-book .cover-title{font-size:clamp(10px,12cqw,26px)}
.library-grid-shelves.is-empty[data-display]{padding:0;background:none;box-shadow:none}
.library-grid-empty{grid-column:1/-1;text-align:center;padding:40px 20px;color:#1646a3;border:2px solid #84b8ff;border-radius:20px;background:linear-gradient(135deg,#e4f3ff 0%,#f0e4ff 48%,#ffe8d9 100%);box-shadow:0 10px 40px #0069fb33}
.library-grid-empty h3{font-family:var(--serif);font-size:26px;font-weight:500;color:inherit}
.library-grid-empty p{font-size:13px;margin-bottom:22px}
.library-grid-empty .button{background:#1646a3;border-color:#84b8ff;color:#fff}
.library-grid-empty .button:hover{background:#123b8c}
@container(max-width:1000px){.library-grid-shelves{--large-columns:7;--medium-columns:10;--small-columns:14}.library-grid-slot{padding-inline:10px}}
@container(max-width:720px){
  .library-grid-shelves{--large-columns:5;--medium-columns:7;--small-columns:10;padding-inline:8px}.library-grid-slot{padding-inline:8px}
  .library-grid-toolbar{grid-template-columns:32px repeat(4,minmax(0,1fr));gap:5px;padding:8px}
  .library-grid-search-toggle{display:grid;place-items:center;width:32px;height:36px;padding:0;border:1px solid var(--line);border-radius:8px;color:var(--ink);background:var(--paper)}
  .library-grid-search-toggle[aria-expanded="true"],.library-grid-search-toggle.has-search{color:var(--accent);background:var(--accent-soft);border-color:var(--accent-border)}
  .library-grid-toolbar>label:not(.search-field){font-size:9px;gap:4px}
  .library-grid-toolbar select{font-size:10px;padding:0 2px 0 4px}
  .library-grid-toolbar select{display:none}
  .library-grid-select-trigger{display:block;width:100%;height:36px;min-width:0;padding:0 14px 0 5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border:1px solid var(--line);border-radius:8px;color:var(--ink);background:var(--paper) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='m3 4.5 3 3 3-3' fill='none' stroke='%237a8799' stroke-width='1.4' stroke-linecap='round'/%3E%3C/svg%3E") right 3px center/9px no-repeat;text-align:left;font-size:10px}
  .library-grid-display-toggle{gap:3px;padding:0 3px;font-size:10px}
  .library-grid-display-toggle .icon{width:12px;height:12px;flex-shrink:0}
  .library-grid-toolbar .search-field{display:none;grid-column:1/-1;grid-row:2;margin-top:4px}
  .library-grid-toolbar.search-open .search-field{display:flex}
}
@container(max-width:480px){
  .library-grid-shelves{--large-columns:3;--medium-columns:4;--small-columns:5}
  .library-grid-shelves[data-display="angled"]{--large-columns:4;--medium-columns:5;--small-columns:6}
  .library-grid-slot{padding:18px 6px 0}
}
@container(max-width:300px){
  .library-grid-shelves{--large-columns:2;--medium-columns:3;--small-columns:4}
  .library-grid-shelves[data-display="angled"]{--large-columns:3;--medium-columns:4;--small-columns:5}
}
.library-grid-shelves[data-book-size="medium"]{--columns:var(--medium-columns);--grid-ledge:18px}
.library-grid-shelves[data-book-size="small"]{--columns:var(--small-columns);--grid-ledge:14px}
.library-grid-shelves[data-book-size="medium"] .library-grid-slot{padding:20px 8px 0;border-bottom-width:18px}
.library-grid-shelves[data-book-size="small"] .library-grid-slot{padding:16px 6px 0;border-bottom-width:14px}
.library-grid-shelves[data-display="angled"]{padding-right:calc(100% / var(--columns) * .3 + 14px)}
.library-grid-shelves[data-display="angled"] .library-grid-slot{padding:65px 0 0}
@container(max-width:480px){.library-grid-shelves[data-display="angled"] .library-grid-slot{padding-top:30px}}
.library-grid-jacket{display:block;position:relative;width:100%;aspect-ratio:2/3}
.library-grid-book .library-grid-jacket>.cover-art{width:100%;height:100%}
.library-grid-page-edge,.library-grid-top-edge{display:none}
.library-grid-shelves[data-display="angled"] .library-grid-book{flex:none;width:155%}
.library-grid-shelves[data-display="angled"] .library-grid-jacket{--book-depth:clamp(10px,7cqw,24px);transform-style:preserve-3d;transform:perspective(1600px) rotateX(-5deg) rotateY(40deg);transform-origin:left bottom;transition:transform .3s cubic-bezier(.2,.7,.25,1);isolation:auto}
.library-grid-shelves[data-display="angled"] .library-grid-jacket>.cover-art{position:relative;transform:translateZ(calc(var(--book-depth)/2));backface-visibility:hidden;border-radius:2px 5px 5px 2px;box-shadow:inset 4px 0 6px #0004,2px 5px 9px #30201644;transition:box-shadow .3s}
.library-grid-shelves[data-display="angled"] .library-grid-jacket::before{content:"";position:absolute;inset:0 auto 0 0;width:var(--book-depth);background:linear-gradient(90deg,#0008,transparent 35%,#fff3 60%,#0005),linear-gradient(180deg,transparent 8%,#e6ce8b99 8.5% 9%,transparent 9.5% 90%,#e6ce8b99 90.5% 91%,transparent 91.5%),var(--jacket-color);transform-origin:left center;transform:translateZ(calc(var(--book-depth)/-2)) rotateY(-90deg);backface-visibility:hidden;border-radius:2px}
.library-grid-shelves[data-display="angled"] .library-grid-jacket::after{content:"";position:absolute;inset:0;background:var(--jacket-color);border-radius:3px;transform:translateZ(calc(var(--book-depth)/-2));box-shadow:12px 12px 18px #30201655}
.library-grid-shelves[data-display="angled"] .library-grid-page-edge{display:block;position:absolute;left:100%;top:1%;height:98%;width:var(--book-depth);background:repeating-linear-gradient(90deg,#d0c0a5 0 1px,#f6edda 1px 3px);transform-origin:left center;transform:translateZ(calc(var(--book-depth)/2)) rotateY(90deg);backface-visibility:hidden}
.library-grid-shelves[data-display="angled"] .library-grid-top-edge{display:block;position:absolute;left:0;top:0;width:100%;height:var(--book-depth);background:repeating-linear-gradient(#f6edda 0 2px,#cbbca3 2px 3px);transform-origin:center top;transform:translateZ(calc(var(--book-depth)/-2)) rotateX(90deg);backface-visibility:hidden}
.library-grid-slot:has(.library-grid-book:is(:focus-visible,.is-touch-preview)){z-index:2}
.library-grid-shelves[data-display="angled"] .library-grid-book:is(:focus-visible,.is-touch-preview) .library-grid-jacket{transform:perspective(1600px) translateY(-12px) translateZ(45px) rotateX(-5deg) rotateY(12deg)}
.library-grid-shelves[data-display="angled"] .library-grid-book:is(:focus-visible,.is-touch-preview) .cover-art{box-shadow:inset 4px 0 6px #0003,12px 20px 24px #30201666}
@media(hover:hover) and (pointer:fine){
  .library-grid-slot:has(.library-grid-book:hover){z-index:2}
  .library-grid-shelves[data-display="angled"] .library-grid-book:hover .library-grid-jacket{transform:perspective(1600px) translateY(-12px) translateZ(45px) rotateX(-5deg) rotateY(12deg)}
  .library-grid-shelves[data-display="angled"] .library-grid-book:hover .cover-art{box-shadow:inset 4px 0 6px #0003,12px 20px 24px #30201666}
}
@media(prefers-reduced-motion:reduce){.library-grid-book .cover-art,.library-grid-shelves[data-display="angled"] .library-grid-jacket{transition:none}}
.library-grid-shelves{border-radius:0}

/* The shelf owns the viewport; controls float above its bottom edge. */
:root #appShell.grid-library-active{position:relative;height:100dvh;min-height:0;margin-block:0;overflow:hidden}
:root #appShell.grid-library-active .main-wrapper{height:100%;min-height:0;display:flex;flex-direction:column;overflow:hidden}
:root #appShell.grid-library-active :is(.topbar,.app-header,.app-statusbar,.page-heading,footer){display:none!important}
:root #appShell.grid-library-active main{display:flex;flex:1;min-height:0;width:100%;height:100%;max-width:none;margin:0;padding:0;overflow:hidden}
:root #appShell.grid-library-active #libraryView{display:block;flex:1;min-height:0;height:100%;width:100%;padding:0;overflow-y:auto;overflow-x:hidden;overflow-anchor:none;touch-action:pan-y;scrollbar-width:thin;scrollbar-color:#ad8059 #eadac4}
:root #appShell.grid-library-active .mobile-nav{position:absolute;bottom:0;left:0;right:0;flex-shrink:0;margin:0}
.library-grid-view{padding:0}
.library-grid-shelves{min-height:100dvh;padding-bottom:var(--grid-bottom-space,170px);overflow-anchor:none}
.library-grid-shelves.is-windowed{display:block}
.library-grid-row{display:grid;grid-template-columns:repeat(var(--columns),minmax(0,1fr))}
.library-grid-spacer{width:100%;pointer-events:none}
.library-grid-dock{position:fixed;z-index:50;display:flex;flex-direction:column;align-items:center;gap:8px;transform:translateX(-50%);pointer-events:none}
.library-grid-dock>*{pointer-events:auto}
.library-grid-dock .library-grid-toolbar{width:100%;margin:0;box-shadow:0 5px 28px #001c6026}
.library-grid-controls-toggle{display:flex;align-items:center;justify-content:center;gap:9px;min-height:38px;max-width:100%;padding:7px 13px;border:1px solid var(--line);border-radius:24px;background:var(--paper);color:var(--ink);box-shadow:0 3px 16px #001c6026;font-size:11px}
.library-grid-controls-toggle .icon{width:15px;height:15px}
.library-grid-controls-toggle .library-grid-count{margin:0;color:inherit;white-space:nowrap}
.grid-controls-chevron{font-size:15px;line-height:1}
.library-grid-controls-toggle[aria-expanded="true"] .grid-controls-chevron{transform:rotate(180deg)}
@media(prefers-reduced-motion:reduce){
  .library-grid-book.is-touch-preview .cover-art{transform:none}
  .library-grid-shelves[data-display="angled"] .library-grid-book.is-touch-preview .library-grid-jacket{transform:perspective(1600px) rotateX(-5deg) rotateY(40deg)}
  .library-grid-shelves[data-display="angled"] .library-grid-book.is-touch-preview .cover-art{transform:translateZ(calc(var(--book-depth)/2))}
}

@container(min-width:1400px){.library-grid-shelves{--large-columns:10;--medium-columns:14;--small-columns:18}}

.library-grid-dock-footer{display:flex;align-items:center;justify-content:center;gap:6px;max-width:100%;pointer-events:none}
.library-grid-dock-footer>*{pointer-events:auto}
.library-grid-appearance-button{display:grid;place-items:center;flex:none;width:38px;height:38px;padding:0;border:1px solid var(--line);border-radius:50%;background:var(--paper);color:var(--ink);box-shadow:0 3px 16px #001c6026}
.library-grid-appearance-button .icon{width:17px;height:17px}
.library-grid-appearance-button[aria-expanded="true"]{background:var(--accent-soft);color:var(--accent);border-color:var(--accent-border)}
.library-grid-palette{width:min(100%,340px);max-height:calc(100dvh - 120px);overflow-y:auto;padding:14px;border:1px solid var(--line);border-radius:16px;background:var(--paper);color:var(--ink);box-shadow:0 6px 28px #001c6033}
.library-grid-palette>strong{display:block;margin:0 0 12px;font-size:12px;font-weight:600}
.library-grid-dock .room-size-menu{background:var(--paper);color:var(--ink);border-color:var(--line);box-shadow:0 6px 28px #001c6033}
.library-grid-dock .room-size-menu [aria-pressed=true]{background:var(--accent-soft);color:var(--ink)}
.library-grid-dock .room-size-menu button:focus-visible{outline-color:var(--accent)}
.library-grid-swatches{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.library-grid-swatches button{min-width:0;padding:5px;border:1px solid transparent;border-radius:9px;color:var(--ink);font-size:10px;line-height:1.4}
.library-grid-swatches button[aria-pressed="true"]{border-color:var(--accent);background:var(--accent-soft)}
.library-grid-swatch{display:block;height:34px;margin-bottom:5px;border:1px solid #0002;border-bottom:6px solid var(--swatch-edge);border-radius:5px;background:var(--swatch-grain,linear-gradient(135deg,#fff3,transparent)),var(--swatch-back)}
.library-grid-shelves[data-grain="wood"]{background-image:url("assets/shelf-wood-grain.svg"),linear-gradient(90deg,#00000020,transparent 12%,transparent 88%,#00000020);background-size:720px 360px,100% 100%;background-color:var(--shelf-back)}
.library-grid-swatch{background-size:180px 90px,auto}
.library-grid-shelves{--shelf-side:14px;--grid-ledge:20px}
.library-grid-shelves[data-book-size="medium"]{--grid-ledge:18px}
.library-grid-shelves[data-book-size="small"]{--grid-ledge:14px}
.library-grid-row{position:relative;background:linear-gradient(180deg,#00000026,transparent 38%,#ffffff08 80%,#00000018)}
.library-grid-row .library-grid-slot{border-image:none;border-bottom-color:transparent;background:none;box-shadow:none}
.library-grid-row::after{content:"";position:absolute;left:calc(-1 * var(--shelf-side));bottom:0;width:100cqw;height:var(--grid-ledge);pointer-events:none;background:var(--shelf-ledge-paint);border-top:1px solid var(--shelf-edge-high);border-bottom:2px solid var(--shelf-edge-dark);box-shadow:0 6px 9px #0005,inset 0 1px 0 #ffffff50}
.library-grid-shelves[data-grain="wood"] .library-grid-row::after{background-image:url("assets/shelf-wood-grain.svg"),var(--shelf-ledge-paint);background-size:360px 120px,100% 100%}
@container(max-width:720px){.library-grid-shelves{--shelf-side:8px}}
@container(max-width:350px){.library-grid-controls-toggle{gap:6px;padding-inline:10px;font-size:10px}.library-grid-controls-toggle .library-grid-count{font-size:10px}.library-grid-dock-footer{gap:4px}.library-grid-appearance-button{width:34px;height:34px}}
