body {
            background-color: #2c241b;
            color: #d7ccc8;
            font-family: 'Shippori Mincho', serif;
            overflow-x: hidden;
            background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.05'/%3E%3C/svg%3E");
        }

        /* 本棚レイアウト */
        .bookshelf {
            display: flex;
            flex-wrap: wrap;
            align-items: flex-end;
            justify-content: center;
            gap: 2px;
            padding: 50px 20px;
            perspective: 1000px;
        }

        /* 本の背表紙 */
        .book-spine {
            width: 40px; /* 厚みはランダムに変える */
            height: 200px; /* 高さもランダムに */
            background-color: #5d4037;
            border-left: 1px solid rgba(255,255,255,0.1);
            border-right: 1px solid rgba(0,0,0,0.3);
            border-radius: 2px;
            box-shadow: 2px 2px 5px rgba(0,0,0,0.5);
            writing-mode: vertical-rl;
            text-orientation: upright;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 0.8rem;
            cursor: pointer;
            transition: transform 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94), background 0.3s;
            position: relative;
            transform-origin: bottom center;
            user-select: none;
        }

        /* ホバー時の「引き出し」アクション */
        .book-spine:hover {
            transform: translateZ(20px) translateY(-30px) scale(1.1);
            z-index: 10;
            box-shadow: 0 10px 20px rgba(0,0,0,0.6);
        }

        /* ランダムな色クラス (JSで付与) */
        .book-red { background: #5d2e2e; color: #ffcccc; }
        .book-blue { background: #2e3b5d; color: #ccccff; }
        .book-green { background: #2e5d3b; color: #ccffcc; }
        .book-brown { background: #4e342e; color: #d7ccc8; }
        .book-black { background: #1a1a1a; color: #f5f5f5; }

        /* 埃（ほこり）パーティクル */
        .dust-particle {
            position: fixed;
            background: white;
            border-radius: 50%;
            pointer-events: none;
            opacity: 0.3;
            animation: float-dust 10s infinite linear;
        }
        @keyframes float-dust {
            0% { transform: translateY(0) translateX(0); opacity: 0; }
            50% { opacity: 0.4; }
            100% { transform: translateY(-100px) translateX(20px); opacity: 0; }
        }

        /* 詳細モーダル */
        .book-modal {
            position: fixed;
            bottom: 20px;
            right: 20px;
            width: 300px;
            background: #fff8e1;
            color: #3e2723;
            padding: 20px;
            box-shadow: 0 10px 30px rgba(0,0,0,0.5);
            transform: translateY(120%);
            transition: transform 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
            z-index: 50;
            border: 1px solid #d7ccc8;
        }
        .book-modal.active {
            transform: translateY(0);
        }
        .book-modal::before {
            content: '貸出カード';
            position: absolute;
            top: -10px;
            left: 20px;
            background: #d32f2f;
            color: white;
            font-size: 0.7rem;
            padding: 2px 8px;
            border-radius: 2px;
        }