:root{--bg: #050712;--bg-alt: #0c0f1e;--accent: #f5c46b;--accent-soft: rgba(245, 196, 107, .15);--book: #f0e4cf;--book-edge: #d2c4ac;--text-main: #f5f5f5;--text-muted: #9ea3c7;--shelf: #2b2f3f;--shadow-soft: 0 18px 35px rgba(0, 0, 0, .55);--radius-xl: 18px;--transition-fast: .25s ease-out;--transition-med: .45s cubic-bezier(.22, .61, .36, 1)}*{box-sizing:border-box;margin:0;padding:0}body{min-height:100vh;font-family:system-ui,-apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,sans-serif;color:var(--text-main);background:radial-gradient(circle at top,#1d2440 0,#050712 55%,#000 100%);display:flex;align-items:stretch;justify-content:center}.library-wrapper{width:100%;max-width:1100px;padding:32px 18px 40px;display:flex;flex-direction:column;gap:22px}.library-header{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;padding:16px 22px;border-radius:22px;background:linear-gradient(135deg,rgba(18,24,48,.96),rgba(7,9,22,.96));box-shadow:var(--shadow-soft);border:1px solid rgba(129,146,214,.25)}.library-title{display:flex;flex-direction:column;gap:4px}.library-title h1{font-weight:650;font-size:clamp(1.4rem,2vw,1.8rem);letter-spacing:.05em;text-transform:uppercase}.library-title p{font-size:.86rem;color:var(--text-muted)}.library-meta{display:flex;gap:10px;font-size:.78rem;color:var(--text-muted);align-items:center}.back-home-btn{display:inline-flex;align-items:center;gap:8px;padding:8px 16px;background:rgba(245,196,107,.1);border:1px solid rgba(245,196,107,.3);border-radius:999px;color:var(--accent);text-decoration:none;font-size:.85rem;font-weight:600;transition:all .3s ease}.back-home-btn:hover{background:rgba(245,196,107,.2);transform:translate(-2px);box-shadow:0 0 15px #f5c46b26}.back-home-btn .btn-icon{font-size:1.1em}.tag-pill{padding:4px 10px;border-radius:999px;border:1px solid rgba(245,196,107,.7);background:linear-gradient(135deg,rgba(245,196,107,.23),rgba(12,10,4,.9));color:#fbedc4;font-size:.78rem;display:inline-flex;align-items:center;gap:6px}.tag-pill span{font-size:.7rem;opacity:.9}.library{position:relative;padding:18px 12px 24px;border-radius:22px;background:radial-gradient(circle at top left,rgba(245,196,107,.16),transparent 55%),radial-gradient(circle at bottom right,rgba(88,122,255,.18),transparent 60%),linear-gradient(145deg,rgba(4,6,16,.98),rgba(5,9,24,.98));border:1px solid rgba(110,132,230,.28);box-shadow:var(--shadow-soft);overflow:hidden}.library:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:repeating-linear-gradient(90deg,rgba(255,255,255,.035),rgba(255,255,255,.035) 1px,transparent 1px,transparent 12px);mix-blend-mode:soft-light;opacity:.4;pointer-events:none}.shelves{position:relative;display:flex;flex-direction:column;gap:18px;z-index:1}.shelf{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:flex-end;column-gap:18px;padding:10px 12px}.shelf:after{content:"";position:absolute;left:12px;right:12px;bottom:0;height:10px;border-radius:999px;background:linear-gradient(180deg,#3a3f56 0%,#151726 100%);box-shadow:0 8px 12px #000000a6,inset 0 1px #ffffff0f}.shelf-label{position:relative;z-index:2;display:inline-flex;align-items:center;justify-content:center;padding:6px 12px;min-width:70px;border-radius:999px;background:radial-gradient(circle at top left,#f5c46b,#d79932);color:#24160a;font-size:.8rem;font-weight:650;text-transform:uppercase;letter-spacing:.16em;box-shadow:0 8px 18px #000000b3,0 0 0 1px #fffaf066;transform-origin:left center}.shelf-label--muted{background:radial-gradient(circle at top left,#34384c,#1b1d2c);color:var(--text-muted);box-shadow:0 6px 12px #000000b3,0 0 0 1px #d5dcff1f}.shelf-books{position:relative;z-index:2;display:flex;align-items:flex-end;gap:14px;padding:0 2px 6px;min-height:70px}.shelf-placeholder{font-size:.78rem;color:var(--text-muted);font-style:italic;opacity:.7}.book{position:relative;width:150px;height:86px;border-radius:6px 10px 10px 6px;background:linear-gradient(135deg,var(--book),#f9f2e6);padding:10px 12px 10px 18px;cursor:pointer;display:flex;flex-direction:column;justify-content:center;transition:transform var(--transition-med),box-shadow var(--transition-med),filter var(--transition-med);transform-origin:bottom center;overflow:hidden}.book:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,rgba(255,255,255,.65),transparent 40%,transparent 100%);opacity:.4;pointer-events:none}.book:after{content:"";position:absolute;top:0;bottom:0;right:18px;width:18px;background:radial-gradient(circle at 30% 20%,rgba(255,255,255,.6),transparent 55%);opacity:0;transition:opacity var(--transition-fast);pointer-events:none}.book:hover{transform:translateY(-6px) rotateX(4deg) rotate(-1deg) scale(1.03);filter:drop-shadow(0 0 14px rgba(245,196,107,.4))}.book:active{transform:translateY(-2px) scale(.99)}.book:hover:after{opacity:1}.book-title{position:relative;z-index:20;font-weight:650;font-size:.86rem;color:#3a3022;text-transform:uppercase;letter-spacing:.09em;text-shadow:0 1px 2px rgba(0,0,0,.1)}.book--restaurant{background:linear-gradient(135deg,#fde8cf,#f7d9b3)}.book--restaurant .book-title{font-size:.8rem;line-height:1.3}.restaurant-icon{position:absolute;bottom:4px;right:6px;width:64px;height:40px}.restaurant-building{position:absolute;bottom:0;left:6px;right:6px;height:26px;background:#e8b27e;border-radius:5px 5px 3px 3px;box-shadow:0 0 0 1px #7d502a80}.restaurant-door{position:absolute;bottom:0;left:24px;width:14px;height:16px;background:#5b3a21;border-radius:3px 3px 0 0}.restaurant-window{position:absolute;bottom:6px;left:8px;width:10px;height:9px;background:#f0f7ff;border-radius:2px;box-shadow:0 0 0 1px #506ea8cc,22px 0 #f0f7ff,22px 0 0 1px #506ea8cc}.restaurant-awning{position:absolute;left:4px;right:4px;bottom:24px;height:9px;background:repeating-linear-gradient(90deg,#f25c54,#f25c54 7px,#ffe4d0 7px,#ffe4d0 14px);border-radius:3px 3px 0 0;box-shadow:0 1px #82452d80}.restaurant-sign{position:absolute;bottom:34px;left:10px;right:10px;height:7px;background:#5b3a21;border-radius:7px;display:flex;align-items:center;justify-content:center;font-size:.46rem;color:#fce9d3;letter-spacing:.12em;text-transform:uppercase}.restaurant-smoke{position:absolute;bottom:34px;right:3px;width:6px;height:16px}.restaurant-smoke:before,.restaurant-smoke:after{content:"";position:absolute;border-radius:999px;background:rgba(255,255,255,.7);filter:blur(.3px)}.restaurant-smoke:before{width:5px;height:5px;bottom:0;right:0}.restaurant-smoke:after{width:6px;height:6px;bottom:6px;right:0;opacity:.6}.book--nuforc{background:linear-gradient(135deg,#1a1a2e,#16213e);border:1px solid #4ecca3}.book--nuforc .book-title{color:#4ecca3;font-size:.8rem;line-height:1.3}.alien-icon{position:absolute;bottom:6px;right:6px;width:50px;height:50px;z-index:5}:root{--alien-skin: #4ade80;--alien-outline: #2e1065;--alien-eye: #1a0b2e}.alien-head{position:absolute;top:5px;left:50%;transform:translate(-50%);width:32px;height:28px;background:var(--alien-skin);border:2px solid var(--alien-outline);border-radius:50% 50% 45% 45%;z-index:10}.alien-eye{position:absolute;top:10px;width:10px;height:14px;background:var(--alien-eye);border-radius:50%;transform:rotate(-15deg)}.alien-eye:after{content:"";position:absolute;top:2px;left:2px;width:3px;height:3px;background:rgba(255,255,255,.8);border-radius:50%}.alien-eye.left{left:2px}.alien-eye.right{right:2px;transform:rotate(15deg)}.alien-mouth{position:absolute;bottom:4px;left:50%;transform:translate(-50%);width:4px;height:2px;border-bottom:1.5px solid var(--alien-outline);border-radius:50%}.alien-antennae{position:absolute;top:0;left:50%;transform:translate(-50%);width:36px;height:10px;z-index:5}.antenna{position:absolute;bottom:0;width:2px;height:8px;background:var(--alien-outline)}.antenna:after{content:"";position:absolute;top:-3px;left:-2px;width:6px;height:6px;background:var(--alien-skin);border:2px solid var(--alien-outline);border-radius:50%}.antenna.left{left:0;transform:rotate(-25deg)}.antenna.right{right:0;transform:rotate(25deg)}.alien-body{position:absolute;bottom:2px;left:50%;transform:translate(-50%);width:20px;height:16px;background:var(--alien-skin);border:2px solid var(--alien-outline);border-radius:40% 40% 45% 45%;z-index:8}.alien-arm{position:absolute;width:8px;height:14px;background:var(--alien-skin);border:2px solid var(--alien-outline);border-radius:10px;z-index:9}.alien-arm.left{top:2px;left:-6px;transform:rotate(-20deg);border-top-left-radius:4px}.alien-arm.right{top:4px;right:-5px;transform:rotate(20deg)}.alien-leg{position:absolute;bottom:-2px;width:10px;height:8px;background:var(--alien-skin);border:2px solid var(--alien-outline);border-radius:10px;z-index:7}.alien-leg.left{left:-4px;transform:rotate(-45deg)}.alien-leg.right{right:-4px;transform:rotate(45deg)}.book--car{background:linear-gradient(135deg,#2c3e50,#34495e);border:1px solid #95a5a6}.book--car .book-title{color:#ecf0f1}.car-icon{position:absolute;bottom:8px;right:8px;width:50px;height:30px}.car-body{position:absolute;bottom:6px;width:100%;height:100%}.car-bottom{position:absolute;bottom:0;width:100%;height:14px;background:#e74c3c;border-radius:4px 4px 2px 2px;z-index:2}.car-top{position:absolute;bottom:14px;left:10%;width:80%;height:10px;background:#c0392b;border-radius:6px 6px 0 0;z-index:1}.car-top:after{content:"";position:absolute;top:2px;left:10%;width:80%;height:6px;background:#ecf0f1;border-radius:3px 3px 0 0}.car-light{position:absolute;bottom:6px;width:6px;height:6px;background:#f1c40f;border-radius:50%;z-index:3;box-shadow:0 0 5px #f1c40f}.car-light.left{left:2px}.car-light.right{right:2px}.car-grille{position:absolute;bottom:2px;left:50%;transform:translate(-50%);width:16px;height:6px;background:#34495e;border-radius:2px;z-index:3;background-image:repeating-linear-gradient(to right,transparent,transparent 2px,#7f8c8d 2px,#7f8c8d 4px)}.car-wheel{position:absolute;bottom:0;width:10px;height:10px;background:#2c3e50;border:2px solid #7f8c8d;border-radius:50%;z-index:4}.car-wheel.left{left:6px}.car-wheel.right{right:6px}.book--hospital{background:linear-gradient(135deg,#e0f7fa,#b2ebf2);border:1px solid #4dd0e1}.book--hospital .book-title{color:#006064}.hospital-icon{position:absolute;bottom:8px;right:8px;width:40px;height:40px}.hospital-building{position:absolute;bottom:0;width:100%;height:32px;background:#ffffff;border:2px solid #b0bec5;border-radius:2px}.hospital-roof{position:absolute;top:-8px;left:-2px;width:calc(100% + 4px);height:8px;background:#546e7a;border-radius:2px 2px 0 0}.hospital-cross{position:absolute;top:4px;left:50%;transform:translate(-50%);width:12px;height:12px;background:#e53935;clip-path:polygon(33% 0,67% 0,67% 33%,100% 33%,100% 67%,67% 67%,67% 100%,33% 100%,33% 67%,0 67%,0 33%,33% 33%)}.hospital-door{position:absolute;bottom:0;left:50%;transform:translate(-50%);width:10px;height:12px;background:#81d4fa;border:1px solid #b0bec5;border-bottom:none}.hospital-window{position:absolute;top:6px;width:6px;height:6px;background:#81d4fa;border:1px solid #b0bec5}.hospital-window.left{left:4px}.hospital-window.right{right:4px}.project-detail-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at top,rgba(9,10,22,.96),rgba(2,3,8,.98));display:flex;justify-content:center;align-items:center;padding:24px 16px;opacity:0;pointer-events:none;transform:scale(.94);transition:opacity var(--transition-med),transform var(--transition-med);z-index:20;overflow-y:auto}.project-detail-backdrop.is-visible{opacity:1;pointer-events:auto;transform:scale(1)}.project-detail-card{position:relative;max-width:720px;width:100%;border-radius:24px;padding:22px 22px 20px;background:radial-gradient(circle at top left,rgba(245,196,107,.2),transparent 60%),linear-gradient(145deg,rgba(17,22,44,.98),rgba(6,8,20,.98));border:1px solid rgba(152,167,238,.42);box-shadow:0 26px 60px #000000f2,0 0 0 1px #040612d9;overflow:hidden;display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:18px;animation:floatIn .7s var(--transition-med) forwards}@keyframes floatIn{0%{opacity:0;transform:translateY(20px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.project-detail-card:before{content:"";position:absolute;top:-40%;right:-40%;bottom:-40%;left:-40%;background:radial-gradient(circle at 0% 0%,rgba(245,196,107,.25),transparent 60%);opacity:.6;mix-blend-mode:soft-light;pointer-events:none}.project-detail-main{position:relative;z-index:1;display:flex;flex-direction:column;gap:10px}.project-detail-meta{display:flex;flex-wrap:wrap;gap:8px;font-size:.75rem;color:var(--text-muted)}.project-detail-title{display:flex;flex-direction:column;gap:4px;margin-top:4px}.project-detail-title h2{font-size:1.35rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.project-detail-title span{font-size:.86rem;color:var(--accent);text-transform:uppercase;letter-spacing:.16em}.project-detail-body{margin-top:8px;font-size:.88rem;line-height:1.55;color:var(--text-main)}.project-detail-body p+p{margin-top:6px}.project-detail-body ul{margin-top:6px;padding-left:18px;font-size:.86rem;color:var(--text-muted)}.project-detail-body li+li{margin-top:2px}.project-detail-side{position:relative;z-index:1;display:flex;flex-direction:column;gap:12px;padding:12px 10px 10px;border-radius:18px;background:radial-gradient(circle at top,rgba(13,21,54,.95),rgba(3,5,13,.98));border:1px solid rgba(142,162,255,.4);box-shadow:inset 0 0 40px #000000b3}.detail-book-preview{position:relative;height:110px;display:flex;align-items:center;justify-content:center;padding-bottom:10px}.detail-book{position:absolute;width:110px;height:68px;border-radius:5px 9px 9px 5px;background:linear-gradient(135deg,var(--book),#f9f2e6);box-shadow:0 20px 36px #000000e6,inset -4px 0 0 var(--book-edge);transform-origin:center bottom;animation:gentleHover 3.2s ease-in-out infinite}.detail-book--restaurant{background:linear-gradient(135deg,#fde8cf,#f7d9b3)}@keyframes gentleHover{0%{transform:translateY(0) rotateX(8deg) rotate(-2deg)}50%{transform:translateY(-6px) rotateX(12deg) rotate(-4deg)}to{transform:translateY(0) rotateX(8deg) rotate(-2deg)}}.detail-book:before,.detail-book:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;pointer-events:none}.detail-book:before{background:linear-gradient(180deg,rgba(255,255,255,.7),transparent 40%,transparent 100%);opacity:.55}.detail-book:after{left:auto;right:16px;width:16px;background:radial-gradient(circle at 30% 20%,rgba(255,255,255,.65),transparent 55%);opacity:.6}.detail-book-label{position:absolute;bottom:6px;left:18px;right:24px;font-size:.65rem;text-transform:uppercase;letter-spacing:.16em;font-weight:650;color:#3a3022}.detail-meta-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;font-size:.8rem}.detail-meta-item{padding:6px 8px;border-radius:12px;background:rgba(16,23,60,.95);border:1px solid rgba(119,140,238,.5)}.detail-meta-label{font-size:.68rem;text-transform:uppercase;letter-spacing:.16em;color:var(--text-muted)}.detail-meta-value{margin-top:2px;font-size:.78rem}.detail-actions{margin-top:2px;display:flex;flex-direction:column;gap:8px}.btn{position:relative;border:none;outline:none;cursor:pointer;border-radius:999px;font-size:.86rem;font-weight:540;letter-spacing:.06em;text-transform:uppercase;padding:9px 14px;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:transform var(--transition-fast),box-shadow var(--transition-fast),filter var(--transition-fast),background var(--transition-fast);white-space:nowrap}.btn-primary{background:linear-gradient(135deg,#f5c46b,#f29a3f);color:#231203;box-shadow:0 15px 26px #000000e6,0 0 0 1px #3b2006b3}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 18px 32px #000000f2,0 0 0 1px #3b2006cc;filter:brightness(1.02)}.btn-primary:active{transform:translateY(0);box-shadow:0 10px 20px #000000e6,0 0 0 1px #3b2006cc}.btn-ghost{background:rgba(9,12,32,.95);color:var(--text-muted);border-radius:999px;border:1px solid rgba(129,142,214,.7);box-shadow:0 10px 25px #000000e6}.btn-ghost:hover{background:rgba(18,23,55,.98);color:#e0e4ff;transform:translateY(-1px)}.btn-icon{font-size:1.1rem}.project-detail-close{position:absolute;top:12px;right:12px;z-index:2}.project-detail-close button{border-radius:999px;border:1px solid rgba(167,178,246,.7);background:rgba(5,7,18,.9);color:var(--text-muted);width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;font-size:.9rem;transition:background var(--transition-fast),transform var(--transition-fast),color var(--transition-fast),box-shadow var(--transition-fast);box-shadow:0 10px 22px #000000d9}.project-detail-close button:hover{background:rgba(16,22,52,.98);color:#fff;transform:translateY(-1px);box-shadow:0 14px 28px #000000f2}.project-detail-close button:active{transform:translateY(0);box-shadow:0 8px 18px #000000e6}.github-link{text-decoration:none;color:inherit}.github-link-label{font-size:.76rem;text-transform:uppercase;letter-spacing:.16em;color:var(--text-muted)}.github-link-main{font-size:.86rem;word-break:break-all}.dive-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at center,#0e1024 0,#01010a 80%);mix-blend-mode:normal;z-index:18;pointer-events:none;opacity:0;transform:scale(.96);transition:opacity .45s ease-out,transform .45s ease-out}.dive-overlay.is-visible{opacity:1;transform:scale(1.06)}.dive-flash{position:fixed;top:0;right:0;bottom:0;left:0;background:radial-gradient(circle at center,#fef8e4 0,rgba(254,248,228,.75) 25%,transparent 60%);mix-blend-mode:screen;z-index:19;pointer-events:none;opacity:0;transform:scale(.96);transition:opacity .2s ease-out,transform .25s ease-out}.dive-flash.is-visible{opacity:1;transform:scale(1.08)}@media (max-width: 780px){.library-wrapper{padding:20px 12px 26px}.library-header{flex-direction:column;align-items:flex-start}.project-detail-backdrop{align-items:flex-start;padding:16px 10px 24px}.project-detail-card{grid-template-columns:minmax(0,1fr);padding:18px 16px 14px;margin:32px auto 24px}.project-detail-side{order:-1}.detail-meta-grid{grid-template-columns:minmax(0,1fr)}}@media (max-width: 520px){.shelf{grid-template-columns:minmax(0,1fr);row-gap:8px}.shelf-label{justify-self:flex-start;transform:scale(.95)}.book{width:140px}.book-title{font-size:.65rem;line-height:1.2;word-wrap:break-word}}.book--game{background:linear-gradient(135deg,#f5f5f5,#e0e0e0);border:1px solid #ccc}.book--game .book-title{color:#333}.controller-icon{position:absolute;bottom:8px;right:8px;width:60px;height:40px}.controller-body{position:absolute;bottom:0;left:50%;transform:translate(-50%);width:56px;height:36px;background:#fff;border-radius:12px 12px 20px 20px;box-shadow:0 2px 6px #00000026;z-index:1}.controller-body:before,.controller-body:after{content:"";position:absolute;bottom:-4px;width:16px;height:24px;background:#fff;border-radius:0 0 10px 10px;z-index:0}.controller-body:before{left:0;transform:rotate(15deg)}.controller-body:after{right:0;transform:rotate(-15deg)}.controller-touchpad{position:absolute;top:6px;left:50%;transform:translate(-50%);width:20px;height:12px;background:#f0f0f0;border-radius:2px;z-index:2;border:1px solid #ddd}.controller-touchpad:after{content:"";position:absolute;top:0;left:-2px;right:-2px;height:100%;border-radius:4px;box-shadow:0 0 4px #0070f3;opacity:.6;z-index:-1}.controller-accent{position:absolute;bottom:6px;left:50%;transform:translate(-50%);width:36px;height:14px;background:#222;border-radius:4px 4px 12px 12px;z-index:2}.controller-joystick{position:absolute;bottom:8px;width:10px;height:10px;background:#222;border-radius:50%;z-index:3;box-shadow:inset 0 2px 3px #fff3;border:1px solid #111}.controller-joystick.left{left:14px}.controller-joystick.right{right:14px}.controller-dpad{position:absolute;top:10px;left:8px;width:10px;height:10px;z-index:3}.controller-dpad:before,.controller-dpad:after{content:"";position:absolute;background:#ccc;border-radius:1px}.controller-dpad:before{top:0;left:3px;width:4px;height:10px}.controller-dpad:after{top:3px;left:0;width:10px;height:4px}.controller-buttons{position:absolute;top:10px;right:8px;width:10px;height:10px;z-index:3}.btn-circle{position:absolute;width:3px;height:3px;background:#ccc;border-radius:50%}.btn-circle.top{top:0;left:50%;transform:translate(-50%)}.btn-circle.bottom{bottom:0;left:50%;transform:translate(-50%)}.btn-circle.left{left:0;top:50%;transform:translateY(-50%)}.btn-circle.right{right:0;top:50%;transform:translateY(-50%)}
