@import"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap";.book{--c: #fff;--h: 160px;--w: 36px;flex-shrink:0}.book.real{cursor:pointer}.book-body{width:var(--w);height:var(--h);position:relative}.book.dummy .book-cover{position:absolute;inset:0;background:repeating-linear-gradient(45deg,transparent,transparent 4px,#111 4px,#111 5px);border:2px solid #111;border-radius:1px}.book.real .book-cover{position:absolute;inset:0;background:#fff;border:2px solid #111;border-radius:1px;box-shadow:none}.book-spine{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:10px 4px}.book-title{writing-mode:vertical-rl;font-size:9px;font-weight:700;letter-spacing:1.5px;color:#111;max-height:calc(var(--h) - 30px);overflow:hidden;text-transform:uppercase}.book-gem{position:absolute;top:12px;left:50%;transform:translate(-50%) rotate(45deg);width:8px;height:8px;background:#111;border:none;box-shadow:none}.book-pages{position:absolute;right:-4px;top:3px;width:4px;height:calc(100% - 6px);background:repeating-linear-gradient(to bottom,#fff 0px 1px,#e0e0e0 1px 2px);border-radius:0 1px 1px 0;border-right:1px solid #111}.book.selected .book-cover{border-width:4px;box-shadow:none}.book.real:hover .book-cover{border-width:3px}.bookshelf-2d{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:#fafafa;perspective:1000px}.side-view{width:100%;height:100%;display:flex;align-items:center;justify-content:center;position:absolute;inset:0;backface-visibility:hidden}.shelf{position:relative;height:200px;max-width:600px}.shelf-top,.shelf-bottom{position:absolute;width:100%;height:3px;background:#111;box-shadow:none}.shelf-top{top:0}.shelf-bottom{bottom:0}.shelf-back{position:absolute;top:3px;width:100%;height:calc(100% - 6px);background:#fff}.books{position:absolute;top:3px;left:0;width:100%;height:calc(100% - 6px);overflow:hidden;cursor:grab}.books:active{cursor:grabbing}.book-slot{position:absolute;bottom:5px;transform:translate(-50%)}.top-view{width:100%;height:100%;display:flex;align-items:center;justify-content:center;position:absolute;inset:0;backface-visibility:hidden;cursor:default}.top-view:active{cursor:grabbing}.clock-bg{position:absolute;width:400px;height:400px;border-radius:50%;background:#fff;box-shadow:none;border:2px solid #111}.clock-bars{position:absolute;width:0;height:0}.bar{position:absolute;left:-3px;bottom:0;width:6px;height:190px;background:repeating-linear-gradient(45deg,transparent,transparent 2px,#111 2px,#111 3px);border:1px solid #111;transform-origin:center bottom;border-radius:1px 1px 0 0}.bar.real{background:#fff;border:2px solid #111;cursor:pointer}.bar.real:hover{filter:brightness(.95)}.bar.second{background:#111!important;border:none!important;width:2px!important;left:-1px!important;box-shadow:0 0 0 1px #fff}.bar.second:after{content:"";position:absolute;top:-6px;left:50%;transform:translate(-50%);width:8px;height:8px;background:#111;border:2px solid #FFF;border-radius:50%;z-index:25}.bar.minute{background:#111!important;border:none!important;width:4px!important;left:-2px!important;height:170px!important;box-shadow:0 0 0 1.5px #fff}.bar.hour{background:#222!important;border:none!important;width:6px!important;left:-3px!important;height:120px!important;box-shadow:0 0 0 1.5px #fff}.clock-dot{position:absolute;width:12px;height:12px;background:#111;border-radius:50%;z-index:40}@media(max-width:600px){.shelf{width:90%!important}.clock-bg{width:300px;height:300px}.bar{height:140px}.bar.second{height:140px!important}.bar.minute{height:125px!important}.bar.hour{height:88px!important}}@media(min-width:769px){.bookshelf-2d{transition:transform .5s cubic-bezier(.16,1,.3,1)}.panel-open .bookshelf-2d{transition-delay:.2s}.shelf,.clock-bg{transition:transform .5s cubic-bezier(.16,1,.3,1)}.panel-open .bookshelf-2d{transform:translate(-22%)}.panel-open .side-view{transform:scale(.7);transform-origin:center center}.panel-open .top-view{transform:scale(.65);transform-origin:center center}}.overlay{position:fixed;inset:0;pointer-events:none;z-index:10;display:flex;flex-direction:column;justify-content:space-between;padding:1.5rem 2rem}.overlay-header{display:flex;justify-content:space-between;align-items:center;pointer-events:auto}.logo{font-size:1.5rem;font-weight:300;letter-spacing:.05em}.logo-text{color:var(--color-text)}.logo-accent{color:var(--color-accent);font-weight:600;margin-left:.25rem}.view-toggle-btn{display:flex;align-items:center;gap:.5rem;padding:.6rem 1.4rem;background:#fffc;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1.5px solid #111;border-radius:50px;cursor:pointer;transition:all .2s ease;font-family:inherit;font-size:.85rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:#111;pointer-events:auto}.view-toggle-btn:hover{background:#fff;border-width:3px;padding:calc(.6rem - 1.5px) calc(1.4rem - 1.5px)}.view-icon{font-size:1.2rem}.view-label{font-weight:500}.current-selection{position:absolute;left:2rem;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:.25rem;pointer-events:none}@media(max-width:768px){.current-selection.top-position{left:50%;top:88%;transform:translate(-50%);text-align:center;align-items:center}.current-selection.top-position .selection-title-container{justify-content:center}}.selection-label{font-size:.7rem;text-transform:uppercase;letter-spacing:.15em;color:var(--color-muted)}.selection-title-container{position:relative;height:2rem;overflow:hidden;display:flex;flex-direction:column;min-width:200px;padding-right:1rem}.selection-title{font-size:1.1rem;line-height:2rem;font-weight:500;color:var(--color-text);white-space:nowrap;display:block;width:100%}.overlay-footer{display:flex;justify-content:center;pointer-events:none}.hint{padding:.75rem 1.5rem;background:var(--color-glass);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.3);border-radius:50px;font-size:.85rem;color:var(--color-muted)}@media(max-width:768px){.overlay{padding:1rem}.logo{font-size:1.2rem}.view-toggle-btn{padding:.5rem 1rem}.view-label{display:none}}.modal-overlay{position:fixed;inset:0;background:#fafafaf2;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;justify-content:center;align-items:center;z-index:100;padding:1rem}.modal-content{position:relative;width:100%;max-width:460px;max-height:80vh;overflow-y:auto;padding:60px 30px 30px;background:#fff;border:3px solid #000;border-radius:0;box-shadow:none}.modal-close-btn{position:absolute;top:10px;right:10px;width:32px;height:32px;border:2px solid #111;background:#fff;border-radius:0;cursor:pointer;font-size:.9rem;color:#111;transition:all .2s ease;z-index:101;display:flex;align-items:center;justify-content:center}.modal-close-btn:hover{background:#111;color:#fff;transform:none}.about-modal{display:flex;flex-direction:column;gap:1rem}.about-header{display:flex;gap:1.5rem;align-items:flex-start}.profile-image-placeholder{width:80px;height:80px;border-radius:0;border:2px solid #111;background:#fafafa;display:flex;align-items:center;justify-content:center;font-size:2rem;color:#111;flex-shrink:0}.profile-image{width:80px;height:80px;border-radius:0;border:2px solid #111;object-fit:contain;background:#fff;filter:grayscale(100%) contrast(1.3);flex-shrink:0}.profile-info h1{font-size:1.4rem;font-weight:600;letter-spacing:-.02em;border-bottom:2px solid #111;padding-bottom:.4rem;display:inline-block;margin:0;line-height:1.2}.profile-info .title{font-size:1rem;color:#111;font-weight:500}.profile-info .subtitle{font-size:.8rem;color:#111;opacity:.6;font-family:Menlo,monospace;margin-top:.2rem}.about-bio{font-size:.9rem;line-height:1.8;color:#111}.about-section h2{font-size:.7rem;text-transform:uppercase;letter-spacing:.15em;color:#111;border-bottom:1px solid #111;padding-bottom:.3rem;margin-bottom:.6rem}.skills-list{display:flex;flex-wrap:wrap;gap:.5rem}.skill-tag{padding:.25rem .5rem;background:transparent;border:1px solid #111;border-radius:0;font-size:.8rem;transition:all .2s ease}.skill-tag:hover{background:#111;color:#fff}.experience-list{display:flex;flex-direction:column;gap:.75rem}.experience-item{display:flex;gap:1rem}.experience-year{width:60px;font-weight:600;color:#111;font-size:.85rem}.experience-details h3{font-size:.95rem;font-weight:500}.experience-details .company{font-size:.85rem;color:#111;opacity:.6}.social-links{display:flex;flex-wrap:wrap;gap:.5rem}.social-link{display:inline-flex;align-items:center;justify-content:center;padding:.5rem 1rem;background:transparent;border:1px solid #000;border-radius:0;text-decoration:none;font-size:.8rem;color:#111;transition:all .2s ease}.social-link:hover{background:#111;color:#fff;transform:none}.project-modal{display:flex;flex-direction:column;gap:1rem}.project-thumbnail{width:100%;height:150px;background:#fff;border:2px solid #111;border-radius:0;display:flex;align-items:center;justify-content:center;overflow:hidden}.project-thumbnail-image{max-width:80%;max-height:80%;object-fit:contain;filter:grayscale(100%) contrast(1.3)}.project-thumbnail-placeholder{font-size:2rem;color:#111;opacity:.5}.project-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1.5rem;margin-bottom:.5rem}.project-title-group{flex:1;display:flex;flex-direction:column;gap:.5rem;min-width:0}.project-header h1{font-size:1.4rem;font-weight:600;letter-spacing:-.02em;border-bottom:2px solid #111;padding-bottom:.4rem;display:inline-block;margin:0;line-height:1.2}.project-date{font-size:.8rem;color:#111;opacity:.6;font-family:Menlo,monospace;margin-top:.2rem}.project-category{background:#111;color:#fff;border-radius:0;font-size:.7rem;padding:.35rem .6rem;white-space:nowrap;display:inline-block;text-transform:uppercase;font-weight:600;letter-spacing:.02em;flex-shrink:0}.project-description{font-size:.9rem;line-height:1.8;color:#111}.project-section h2{font-size:.7rem;text-transform:uppercase;letter-spacing:.15em;color:#111;border-bottom:1px solid #111;padding-bottom:.3rem;margin-bottom:.6rem}.tech-stack{display:flex;flex-wrap:wrap;gap:.5rem}.tech-tag{padding:.25rem .5rem;background:transparent;border:1px solid #111;border-radius:0;font-size:.75rem;font-family:Menlo,monospace}.project-links{display:flex;gap:1rem;margin-top:.5rem}.project-link{display:flex;align-items:center;gap:.5rem;padding:.6rem 1rem;background:transparent;border:2px solid #111;border-radius:0;text-decoration:none;color:#111;font-size:.85rem;transition:all .2s ease}.project-link:hover{background:#111;color:#fff;transform:none}.project-link.primary{background:#111;color:#fff}.project-link.primary:hover{background:transparent;color:#111}@media(max-width:600px){.modal-content{padding:45px 20px 20px;max-height:85vh}.project-header h1{font-size:1.2rem}}.detail-panel{position:fixed;top:50%;left:58%;transform:translateY(-50%) translate(-100%);width:38%;max-width:460px;min-height:350px;max-height:75vh;background:#fff;border:3px solid #111;z-index:50;overflow:hidden;opacity:0}.detail-panel-content{padding:55px 30px 30px;height:100%;overflow-y:auto}.detail-panel-close{position:absolute;top:10px;right:10px;width:32px;height:32px;border:2px solid #111;background:#fff;cursor:pointer;font-size:.9rem;color:#111;transition:all .2s ease;z-index:101;display:flex;align-items:center;justify-content:center}.detail-panel-close:hover{background:#111;color:#fff}.detail-panel .project-modal,.detail-panel .about-modal{gap:1rem}.detail-panel .project-thumbnail{height:150px;background:#fafafa;border:2px solid #111;border-radius:0}.detail-panel .project-thumbnail-placeholder{font-size:2rem}.detail-panel .project-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1.5rem;margin-bottom:.5rem}.detail-panel .project-title-group{flex:1;display:flex;flex-direction:column;gap:.5rem;min-width:0}.detail-panel .project-header h1,.detail-panel .about-header h1,.detail-panel .profile-info h1{font-size:1.4rem;font-weight:600;letter-spacing:-.02em;border-bottom:2px solid #111;padding-bottom:.4rem;display:inline-block;margin:0;line-height:1.2}.detail-panel .project-date,.detail-panel .profile-info .subtitle{font-size:.8rem;color:#111;opacity:.6;font-family:Menlo,monospace;margin-top:.2rem}.detail-panel .project-contribution{background:#111;color:#fff;border-radius:0;font-size:.7rem;padding:.35rem .6rem;white-space:nowrap;display:inline-block;text-transform:uppercase;font-weight:600;letter-spacing:.02em;flex-shrink:0}.detail-panel .project-section h2,.detail-panel .about-section h2{font-size:.7rem;color:#111;border-bottom:1px solid #111;padding-bottom:.3rem;margin-bottom:.6rem}.detail-panel .tech-tag{background:transparent;border:1px solid #111;border-radius:0;font-size:.75rem;padding:.25rem .5rem}.detail-panel .skill-tag{background:transparent;border:1px solid #111;border-radius:0;font-size:.8rem}.detail-panel .skill-tag:hover{background:#111;color:#fff}.detail-panel .project-link{background:transparent;border:2px solid #111;border-radius:0;color:#111;font-size:.85rem;padding:.6rem 1rem}.detail-panel .project-link:hover{background:#111;color:#fff;transform:none}.detail-panel .project-link.primary{background:#111;color:#fff}.detail-panel .project-link.primary:hover{background:transparent;color:#111}.detail-panel .profile-image-placeholder{border-radius:0;border:2px solid #111;background:#fafafa;width:80px;height:80px}.detail-panel .project-description,.detail-panel .about-bio{font-size:.9rem;line-height:1.8;color:#111}.detail-panel .social-link{border-radius:0;border:1px solid #111;background:transparent}.detail-panel .social-link:hover{background:#111;color:#fff;transform:none}@media(max-width:768px){.detail-panel{display:none}}:root{--color-bg: #f8f6f3;--color-bg-dark: #e8e4df;--color-wood: #8b7355;--color-accent: #2d3748;--color-accent-light: #4a5568;--color-text: #1a1a1a;--color-muted: #6b7280;--color-glass: rgba(255, 255, 255, .25);--color-glass-border: rgba(255, 255, 255, .4)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{width:100%;height:100%;overflow:hidden}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:linear-gradient(180deg,var(--color-bg) 0%,var(--color-bg-dark) 100%);color:var(--color-text);line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{width:100%;height:100%}.app{width:100%;height:100%;position:relative;background:transparent;transition:background .3s ease .5s}.app.panel-open{background:#fafafa;transition:background 0s ease 0s}.glass{background:var(--color-glass);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--color-glass-border);border-radius:16px;box-shadow:0 8px 32px #0000001a,inset 0 1px #ffffff80}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#0003;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#0000004d}::selection{background:var(--color-accent);color:#fff}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}button{font-family:inherit;border:none;background:none;cursor:pointer}a{color:inherit;text-decoration:none}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}.fade-in{animation:fadeIn .5s ease forwards}.slide-up{animation:slideUp .5s ease forwards}
