:root{--main-color: #2c3e50;--accent-color: #3498db;--gradient-blue: linear-gradient(90deg, #3498db, #2c3e50);--gradient-nav: linear-gradient(90deg, #2c3e50, #3498db);--gradient-sidebar: linear-gradient(135deg, #2c3e50 0%, #1a2a3a 100%);--gradient-orange: linear-gradient(90deg, #e74c3c, #f39c12);--gradient-btn: linear-gradient(135deg, #3498db, #2980b9);--shadow-sm: 0 3px 10px rgba(0,0,0,.08);--shadow-md: 0 5px 15px rgba(0,0,0,.1);--shadow-lg: 0 8px 25px rgba(0,0,0,.1);--transition-normal: all .3s ease;--light-gray: #f8f9fa;--border-radius: 10px;--max-width: 900px;--primary-purple: #8a2be2;--primary-teal: #00ced1;--primary-coral: #ff6347;--primary-gold: #ffd700;--primary-magenta: #ff00ff;--gradient-purple-blue: linear-gradient(135deg, #9370db, #00bfff);--gradient-teal-blue: linear-gradient(135deg, #00ced1, #1e90ff);--gradient-coral-gold: linear-gradient(135deg, #ff6347, #ffd700);--gradient-purple-magenta: linear-gradient(135deg, #8a2be2, #ff1493);--gradient-rainbow: linear-gradient(to right, #ff0000, #ff8000, #ffff00, #80ff00, #00ff00, #00ff80, #00ffff, #0080ff, #0000ff, #8000ff, #ff00ff, #ff0080)}body{margin:0;font-family:Open Sans,sans-serif;line-height:1.6;color:#333;background-color:#f5f7fa;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-text-size-adjust:100%}#root{max-width:1400px;margin:0 auto;padding:0;text-align:left;min-height:100vh;min-height:-webkit-fill-available}h1,h2,h3,h4,h5,h6{font-family:Lato,sans-serif;color:var(--main-color);line-height:1.3;line-height:1.2}h1{font-size:2.4rem;margin-bottom:.8rem;font-size:clamp(1.8rem,5vw,2.4rem)}h2{font-size:1.8rem;margin-bottom:.6rem;font-size:clamp(1.4rem,4vw,1.8rem)}h3{font-size:clamp(1.2rem,3.5vw,1.5rem);margin-bottom:.5rem}h4{font-size:clamp(1.1rem,3vw,1.3rem);margin-bottom:.4rem}a{color:var(--accent-color);text-decoration:none;transition:var(--transition-normal)}a:hover{color:#2980b9}.layout-container{display:flex;box-shadow:var(--shadow-md);border-radius:8px;overflow:hidden;margin:0 auto 20px;background-color:#fff;contain:content;flex-direction:column}.main-content{flex:1;padding:30px;overflow-x:hidden;contain:content;padding:clamp(15px,4vw,30px);min-height:calc(100vh - 200px)}@media (min-width: 768px){.layout-container{flex-direction:row}.main-content{padding:30px}}header{background:var(--gradient-nav);box-shadow:var(--shadow-sm);padding:0;position:sticky;top:0;z-index:100;margin-bottom:0;contain:layout;will-change:transform;-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}nav{display:flex;justify-content:center;gap:5px;padding:0 20px;contain:layout;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none}nav::-webkit-scrollbar{display:none}nav a{color:#fffc;text-decoration:none;padding:18px 20px;position:relative;transition:var(--transition-normal);font-weight:500;letter-spacing:.5px;text-transform:uppercase;font-size:.9rem;white-space:nowrap;min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center}nav a:after{content:"";position:absolute;bottom:0;left:50%;transform:translate(-50%);width:0;height:3px;background:var(--gradient-orange);transition:width .3s ease;will-change:width}nav a:hover:after,nav a.active:after{width:80%}nav a:hover,nav a.active{color:#fff;background:#ffffff1a}nav a.active{box-shadow:inset 0 -3px #ffffff4d}.sidebar{background:var(--gradient-sidebar);box-shadow:2px 0 15px #0000001a;padding:25px 0;transition:var(--transition-normal);width:100%;flex-shrink:0;contain:content;content-visibility:auto;order:2}.sidebar-content{padding:15px 20px;text-align:center;animation:fadeIn .6s ease-out forwards}@media (min-width: 768px){.sidebar{width:280px;order:0}}.profile-image{width:120px;height:180px;border-radius:40%;object-fit:cover;object-position:center 30%;border:5px solid rgba(255,255,255,.2);box-shadow:var(--shadow-md);margin:10px auto 20px;transition:transform .3s ease,border-color .3s ease;position:relative;z-index:1;will-change:transform}.profile-image:before{content:"";position:absolute;top:-10px;left:-10px;right:-10px;bottom:-10px;background:linear-gradient(135deg,#3498db,#2ecc71,#e74c3c,#9b59b6);border-radius:40%;z-index:-1;opacity:.7;animation:rotate 8s linear infinite;will-change:transform}.profile-image:hover{transform:scale(1.05);border-color:#fff6}.sidebar h2{color:#fff;font-size:1.8rem;margin:10px 0 5px;background:var(--gradient-orange);-webkit-background-clip:text;-webkit-text-fill-color:transparent;text-shadow:0 1px 3px rgba(0,0,0,.2)}.sidebar .title{color:#fffc;font-size:1.1rem;margin-bottom:15px;padding-bottom:15px;border-bottom:2px solid rgba(255,255,255,.1)}.sidebar .bio-text{color:#ffffffb3;font-size:.95rem;margin-bottom:25px;line-height:1.6}.social-links{display:flex;justify-content:center;gap:15px;margin-top:25px}.social-link{display:flex;align-items:center;background:linear-gradient(135deg,#ffffff1a,#ffffff0d);color:#fffc;padding:8px 15px;border-radius:20px;transition:transform .3s ease,background .3s ease,box-shadow .3s ease;border:1px solid rgba(255,255,255,.1);text-decoration:none;will-change:transform}.social-link:hover{background:linear-gradient(135deg,#fff3,#ffffff1a);transform:translateY(-3px);box-shadow:var(--shadow-sm);color:#fff}.content-card{background:#fff;border-radius:var(--border-radius);padding:25px;margin-bottom:25px;box-shadow:var(--shadow-sm);transition:transform .3s ease,box-shadow .3s ease;border-left:4px solid var(--accent-color);will-change:transform;contain:content}.content-card:hover{transform:translateY(-5px);box-shadow:var(--shadow-lg)}.gradient-card{background:linear-gradient(135deg,#fff,#f8f9fa);border-radius:15px;padding:30px;margin:30px 0;box-shadow:0 10px 20px #0000001a,0 6px 6px #0000001a;position:relative;overflow:hidden}.gradient-card:before{content:"";position:absolute;top:0;left:0;width:100%;height:8px;background:linear-gradient(90deg,var(--primary-purple),var(--primary-teal),var(--primary-coral),var(--primary-gold))}.gradient-card:hover{transform:translateY(-10px);box-shadow:0 15px 30px #00000026,0 10px 10px #0000001a}.rainbow-text{background:var(--gradient-rainbow);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:shimmer 3s ease-in-out infinite}.gradient-heading{position:relative;padding-bottom:10px}.gradient-heading:after{content:"";position:absolute;bottom:0;left:0;width:80px;height:4px;border-radius:2px;background:var(--gradient-teal-blue);transition:width .3s ease}.gradient-heading:hover:after{width:120px}.colored-section{border-radius:12px;padding:25px;margin:20px 0;position:relative;overflow:hidden}.primary-section{background:linear-gradient(135deg,#7b68ee1a,#20b2aa1a);border-left:5px solid var(--primary-purple)}.secondary-section{background:linear-gradient(135deg,#ff63470d,#ffd7000d);border-left:5px solid var(--primary-coral)}.animate-fade-in{animation:fadeIn .8s ease-out forwards}.animate-slide-left{animation:slideInLeft .8s ease-out forwards}.animate-slide-right{animation:slideInRight .8s ease-out forwards}.animate-fade-up{animation:fadeInUp .6s ease-out forwards;opacity:0}.animation-delay-1{animation-delay:.1s}.animation-delay-2{animation-delay:.2s}.animation-delay-3{animation-delay:.3s}.animation-delay-4{animation-delay:.4s}.animation-delay-5{animation-delay:.5s}.home-container{padding:20px 0 40px;contain:content;max-width:900px;margin:0 auto}.bio-section{padding:30px;border-radius:var(--border-radius);margin-bottom:30px;background:#fff;box-shadow:var(--shadow-sm);transition:transform .3s ease,box-shadow .3s ease;will-change:transform;contain:content}.bio-section:hover{transform:translateY(-5px);box-shadow:var(--shadow-lg)}.bio-section h1{color:#2c3e50;font-size:2.5rem;margin-bottom:5px;background:var(--gradient-rainbow);-webkit-background-clip:text;-webkit-text-fill-color:transparent;animation:shimmer 3s ease-in-out infinite;position:relative;padding-bottom:10px}.bio-section h1:after{content:"";position:absolute;bottom:0;left:0;width:100%;height:4px;background:var(--gradient-rainbow);border-radius:3px;animation:expand 1s ease-out forwards}.bio-section .subtitle{color:#34495e;font-weight:500;margin-bottom:20px;font-size:1.3rem}.bio-section p{font-size:1.05rem;line-height:1.7;margin-bottom:1.5rem;max-width:700px}.news-section,.achievements-section{padding:25px;border-radius:var(--border-radius);margin-bottom:30px;animation:fadeInUp .6s ease-out forwards;opacity:0;content-visibility:auto;contain:content;will-change:opacity,transform}.news-section h2,.achievements-section h2{padding:8px 15px;background:linear-gradient(90deg,#3498db,#2980b9);color:#fff;border-radius:5px;display:inline-block;margin-bottom:20px}.news-list{list-style:none;padding:0}.news-list li{background-color:#ffffffb3;border-radius:8px;padding:15px;margin-bottom:12px;transition:transform .3s ease,background-color .3s ease;border-left:3px solid transparent;display:flex;will-change:transform}.news-list li:nth-child(1),.news-list li:nth-child(2),.news-list li:nth-child(3),.news-list li:nth-child(4),.news-list li:nth-child(5){border-left-color:#3498db,#e67e22,#2ecc71,#e74c3c,#9b59b6}.news-list li:nth-child(1){border-left-color:#3498db}.news-list li:nth-child(2){border-left-color:#e67e22}.news-list li:nth-child(3){border-left-color:#2ecc71}.news-list li:nth-child(4){border-left-color:#e74c3c}.news-list li:nth-child(5){border-left-color:#9b59b6}.news-list li:hover{transform:translate(5px);background-color:#ffffffe6;box-shadow:var(--shadow-sm)}.news-date{font-weight:700;min-width:100px;color:#2c3e50;background:linear-gradient(90deg,#f1f1f1,transparent);padding:3px 10px;border-radius:4px}.action-links{margin-top:25px}.action-links .btn{padding:12px 24px;margin-right:15px;background:var(--gradient-btn);border:none;color:#fff;font-weight:600;transition:transform .3s ease,box-shadow .3s ease;box-shadow:var(--shadow-sm);will-change:transform}.action-links .btn:hover{background:linear-gradient(135deg,#2980b9,#3498db);transform:translateY(-3px);box-shadow:var(--shadow-md)}.btn{padding:10px 20px;font-weight:600;border-radius:6px;transition:transform .3s ease,box-shadow .3s ease;box-shadow:var(--shadow-sm);display:inline-block;text-decoration:none;color:#fff;background:var(--gradient-btn);border:none;will-change:transform}.btn:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.btn-sm{padding:8px 16px;font-size:.9rem}.publications-container,.talks-container{padding:20px 0;content-visibility:auto}.page-header{margin-bottom:30px}.page-title{border-bottom:3px solid var(--accent-color);padding-bottom:10px;display:inline-block}.publication,.talk{background:#fff;padding:25px;border-radius:var(--border-radius);margin-bottom:25px;box-shadow:var(--shadow-sm);transition:transform .3s ease,box-shadow .3s ease;border-left:4px solid var(--accent-color);will-change:transform;contain:content}.publication:hover,.talk:hover{transform:translateY(-3px);box-shadow:var(--shadow-md)}.publication-title a,.talk-title a{color:var(--main-color);text-decoration:none}.publication-date,.publication-venue,.talk-date,.talk-venue,.talk-location,.talk-type{color:#666;margin:5px 0}.publication-links,.talk-links{margin-top:20px}.publication-citation{background-color:#f9f9f9;border-left:3px solid #ddd;padding:15px;margin:15px 0;font-style:italic;color:#555}.publication-detail,.talk-detail{background:#fff;padding:30px;border-radius:var(--border-radius);box-shadow:var(--shadow-sm);contain:content}.publication-meta,.talk-meta{background-color:#f9f9f9;padding:15px;border-radius:5px;margin:20px 0}.publication-content,.talk-content{margin-top:30px}.back-link{margin-top:30px;padding-top:15px;border-top:1px solid #eee}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:50px 0}.loading-spinner{border:4px solid #f3f3f3;border-top:4px solid var(--accent-color);border-radius:50%;width:40px;height:40px;animation:spin 1s linear infinite;margin-bottom:15px;will-change:transform}.error-message{color:#e74c3c;background-color:#fadbd8;padding:15px;border-radius:5px;margin:20px 0}.markdown-content{contain:content;content-visibility:auto}.about-section{content-visibility:auto;contain:content}.about-container{max-width:900px;margin:0 auto;padding:40px;animation:fadeIn .8s ease-out forwards;background:linear-gradient(135deg,#fff,#f8f9fa);border-radius:15px;box-shadow:0 10px 40px #00000014;position:relative}.about-container h1{font-size:3rem;margin:0 0 .2em;color:var(--main-color);font-weight:700;letter-spacing:-.5px;position:relative}.about-container h1+h2{font-size:1.5rem;color:var(--accent-color);font-weight:400;margin:0 0 1.5em;font-style:italic}.about-container h1+h2+p{font-size:1rem;line-height:1.6;color:#666;margin:1.5em 0;padding:20px;background:linear-gradient(135deg,#f8f9fa,#e9ecef);border-radius:10px;border-left:4px solid var(--accent-color);font-weight:500}.about-container h1+h2+p strong{color:var(--main-color);font-weight:700}.about-container h3:first-of-type+p{font-size:1.1rem;line-height:1.7;color:#444;margin:2em 0;padding:25px;background:linear-gradient(135deg,#3498db0d,#9b59b60d);border-radius:12px;border:1px solid rgba(52,152,219,.1);position:relative}.about-container h3:first-of-type+p:before{content:"💼";position:absolute;top:-10px;left:20px;background:#fff;padding:5px 10px;border-radius:50%;box-shadow:0 2px 10px #0000001a}.resume-container{max-width:900px;margin:0 auto;padding:40px;animation:fadeIn .8s ease-out forwards;background:#fff;border-radius:12px;box-shadow:0 5px 30px #00000014;position:relative}.resume-name{font-size:2.8rem;margin:0 0 .2em;color:var(--main-color);font-weight:700;letter-spacing:-.5px}.resume-title{font-size:1.3rem;color:var(--accent-color);font-weight:500;margin:0 0 1em;text-transform:uppercase;letter-spacing:1px}.resume-contact-info{font-size:1rem;color:#666;margin:1em 0 2em;padding:15px 0;border-top:1px solid #eee;border-bottom:1px solid #eee;text-align:center;font-weight:500}.resume-contact-info strong{color:var(--accent-color)}.resume-section-header{font-size:1.8rem;color:var(--main-color);margin:2.5em 0 1em;padding:15px 20px;background:linear-gradient(135deg,var(--accent-color),#2980b9);color:#fff;border-radius:8px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;box-shadow:0 3px 10px #3498db4d}.resume-subsection{font-size:1.3rem;color:var(--main-color);margin:2em 0 1em;padding-bottom:.5em;border-bottom:2px solid var(--accent-color);font-weight:600;position:relative}.resume-subsection:before{content:"";position:absolute;bottom:-2px;left:0;width:40px;height:2px;background:var(--main-color)}.resume-job-title{font-size:1.1rem;color:var(--main-color);font-weight:600;margin:1.5em 0 .5em}.resume-job-title+p{color:#666;font-size:.95rem;margin:.5em 0;font-style:italic}.job-description{margin:1em 0 1.5em;line-height:1.6}.resume-highlight{font-weight:500;color:#444}.resume-highlight-text{color:var(--accent-color);font-weight:600}.resume-section-divider{margin:3em 0;border:none;height:2px;background:linear-gradient(to right,transparent,var(--accent-color),transparent)}.tech-stack-section{margin:1.5em 0}.tech-stack-section strong{color:var(--main-color);display:block;margin-bottom:10px;font-weight:600}.about-container h3{font-size:1.4rem;color:var(--main-color);margin:2.5em 0 1em;padding-bottom:.5em;border-bottom:2px solid var(--accent-color);font-weight:600;position:relative}.about-container h3:before{content:"";position:absolute;bottom:-2px;left:0;width:50px;height:2px;background:var(--main-color)}.about-container h3+ul{list-style:none;padding:0;margin:1.5em 0;display:grid;gap:15px}.about-container h3+ul li{background:#fff;padding:15px 20px;border-radius:8px;box-shadow:0 2px 8px #0000000d;border-left:4px solid var(--accent-color);margin:0;position:relative;transition:all .3s ease}.about-container h3+ul li:hover{transform:translate(5px);box-shadow:0 4px 15px #0000001a}.about-container h3+ul li:before{content:"✓";position:absolute;left:-12px;top:50%;transform:translateY(-50%);background:var(--accent-color);color:#fff;width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700}.about-container h3+ul li strong{color:var(--main-color);font-weight:600}.skill-card{background:linear-gradient(135deg,#ffffffe6,#f8f9fae6);position:relative}.skill-card.gen-ai{background:linear-gradient(135deg,#8a2be20d,#ffffffe6)}.skill-card.gen-ai:before{background:linear-gradient(90deg,#8a2be2,#9370db)}.skill-card.gen-ai h3:after{background:linear-gradient(90deg,#8a2be2,#9370db)}.skill-card.data{background:linear-gradient(135deg,#00ced10d,#ffffffe6)}.skill-card.data:before{background:linear-gradient(90deg,#00ced1,#20b2aa)}.skill-card.data h3:after{background:linear-gradient(90deg,#00ced1,#20b2aa)}.skill-card.infra{background:linear-gradient(135deg,#ff63470d,#ffffffe6)}.skill-card.infra:before{background:linear-gradient(90deg,tomato,coral)}.skill-card.infra h3:after{background:linear-gradient(90deg,tomato,coral)}.skill-card.security{background:linear-gradient(135deg,#ffd7000d,#ffffffe6)}.skill-card.security:before{background:linear-gradient(90deg,gold,#fa3)}.skill-card.security h3:after{background:linear-gradient(90deg,gold,#fa3)}.skill-card.wallet{background:linear-gradient(135deg,#ff00ff0d,#ffffffe6)}.skill-card.wallet:before{background:linear-gradient(90deg,#f0f,orchid)}.skill-card.wallet h3:after{background:linear-gradient(90deg,#f0f,orchid)}.speaker-section{background:linear-gradient(135deg,#8a2be21a,#ff14931a);border-radius:20px;padding:35px;margin:40px 0;box-shadow:0 15px 25px #00000014;border-left:8px solid;border-image:linear-gradient(to bottom,var(--primary-purple),var(--primary-magenta)) 1}.speaker-section:before{content:"🎤";position:absolute;font-size:5rem;top:10px;right:10px;opacity:.15;animation:pulse 2s ease-in-out infinite}.speaker-section h2{background:var(--gradient-purple-magenta)!important;width:auto;display:inline-block;padding:12px 25px!important;border-radius:12px!important;transform:rotate(-2deg);margin-bottom:25px!important}.tech-stack{display:flex;flex-wrap:wrap;gap:10px;margin:20px 0;padding:5px}.tech-pill{background:linear-gradient(135deg,#f8f9fa,#e8f4f8);border-radius:25px;padding:8px 15px;font-size:.9rem;font-weight:600;color:#444;border:none;box-shadow:3px 3px 8px #0000001a;transition:all .3s ease}.tech-pill:nth-child(5n+1),.news-list li:nth-child(5n+1){border-bottom:3px solid var(--primary-purple);border-left-color:var(--primary-purple)}.tech-pill:nth-child(5n+2),.news-list li:nth-child(5n+2){border-bottom:3px solid var(--primary-teal);border-left-color:var(--primary-teal)}.tech-pill:nth-child(5n+3),.news-list li:nth-child(5n+3){border-bottom:3px solid var(--primary-coral);border-left-color:var(--primary-coral)}.tech-pill:nth-child(5n+4),.news-list li:nth-child(5n+4){border-bottom:3px solid var(--primary-gold);border-left-color:var(--primary-gold)}.tech-pill:nth-child(5n+5),.news-list li:nth-child(5n+5){border-bottom:3px solid var(--primary-magenta);border-left-color:var(--primary-magenta)}.tech-pill:hover{transform:translateY(-5px);box-shadow:5px 5px 12px #00000026}@keyframes slideInLeft{0%{opacity:0;transform:translate(-30px)}to{opacity:1;transform:translate(0)}}@keyframes slideInRight{0%{opacity:0;transform:translate(30px)}to{opacity:1;transform:translate(0)}}.skill-card:nth-child(odd){animation:slideInLeft .8s ease-out forwards;animation-delay:calc(.15s * var(--animation-order, 1))}.skill-card:nth-child(2n){animation:slideInRight .8s ease-out forwards;animation-delay:calc(.15s * var(--animation-order, 1))}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.news-section{animation-delay:.2s}.achievements-section{animation-delay:.4s}@media (min-width: 992px){.main-content{padding:40px 60px}.home-container,.publication-detail,.publications-container,.talks-container{width:100%;max-width:var(--max-width)}}@media (max-width: 992px){.layout-container{flex-direction:column}.sidebar{width:100%;padding:15px}.news-list li{flex-direction:column}.news-date{margin-bottom:5px}h1{font-size:2rem}.profile-image{width:160px;height:240px}nav{padding:0;overflow-x:auto;justify-content:flex-start}nav a{padding:15px;font-size:.8rem}}@media (max-width: 768px){.main-content{padding:20px}.action-links .btn{display:block;margin:10px 0}}.books-container{padding:20px;max-width:var(--max-width);margin:0 auto}.books-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px;margin-top:20px}.book-card{background:#fff;border-radius:var(--border-radius);box-shadow:var(--shadow-md);overflow:hidden;transition:var(--transition-normal);border:1px solid #e0e6ed}.book-card:hover{transform:translateY(-5px);box-shadow:var(--shadow-lg)}.book-cover{background:var(--gradient-purple-blue);height:120px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:2rem}.book-cover-placeholder{font-size:3rem;opacity:.8}.book-info{padding:20px}.book-title{margin:0 0 10px;font-size:1.2rem}.book-title a{color:var(--main-color);text-decoration:none;font-weight:600}.book-title a:hover{color:var(--accent-color)}.book-author,.book-genre,.book-status,.book-chapters,.book-date{margin:5px 0;font-size:.9rem;color:#666}.book-status.completed{color:#27ae60;font-weight:600}.book-status.ongoing{color:#e67e22;font-weight:600}.book-description{margin:10px 0;color:#555;font-size:.9rem;line-height:1.5}.book-actions{margin-top:15px;padding-top:15px;border-top:1px solid #eee}.no-books{text-align:center;padding:40px 20px;color:#666;font-style:italic}.book-reader{min-height:100vh;transition:var(--transition-normal)}.book-reader.light-theme{background-color:#fefefe;color:#333}.book-reader.dark-theme{background-color:#1a1a1a;color:#e0e0e0}.reading-controls{position:sticky;top:0;background:inherit;border-bottom:1px solid #ddd;padding:10px 20px;display:flex;justify-content:space-between;align-items:center;z-index:100;box-shadow:0 2px 4px #0000001a}.dark-theme .reading-controls{border-bottom-color:#444}.controls-left,.controls-right{display:flex;align-items:center;gap:10px}.controls-center{flex:1;text-align:center}.book-title-header{margin:0;font-size:1.2rem;font-weight:600}.font-size-display{font-size:.9rem;color:#666;margin:0 5px}.dark-theme .font-size-display{color:#aaa}.book-metadata{max-width:800px;margin:20px auto;padding:0 20px}.metadata-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px;margin-bottom:15px}.metadata-item{font-size:.9rem}.status-badge{padding:2px 8px;border-radius:12px;font-size:.8rem;font-weight:600;margin-left:5px}.status-badge.completed{background-color:#d4edda;color:#155724}.status-badge.ongoing{background-color:#fff3cd;color:#856404}.dark-theme .status-badge.completed{background-color:#155724;color:#d4edda}.dark-theme .status-badge.ongoing{background-color:#856404;color:#fff3cd}.book-description-meta{margin-top:15px;padding-top:15px;border-top:1px solid #eee;font-size:.95rem;line-height:1.6}.dark-theme .book-description-meta{border-top-color:#444}.book-content{max-width:800px;margin:20px auto;padding:0 20px;line-height:1.8}.book-content .chapter-title{font-size:1.8rem;margin:30px 0 20px;text-align:center;color:var(--main-color);border-bottom:2px solid var(--accent-color);padding-bottom:10px}.dark-theme .book-content .chapter-title{color:#e0e0e0}.book-content .section-title{font-size:1.4rem;margin:25px 0 15px;color:var(--accent-color)}.dark-theme .book-content .section-title{color:#5dade2}.book-content .subsection-title{font-size:1.2rem;margin:20px 0 12px;color:#555}.dark-theme .book-content .subsection-title{color:#bbb}.book-content .paragraph{margin:15px 0;text-indent:2em;text-align:justify}.book-content .chapter-divider{text-align:center;margin:30px 0;font-size:1.2rem;color:#666;letter-spacing:.5em}.dark-theme .book-content .chapter-divider{color:#999}.reading-footer{background:inherit;border-top:1px solid #ddd;padding:15px 20px;margin-top:40px;position:sticky;bottom:0}.dark-theme .reading-footer{border-top-color:#444}.reading-info{text-align:center;font-size:.9rem;color:#666}.dark-theme .reading-info{color:#aaa}.book-contents-container{max-width:900px;margin:0 auto;padding:20px}.contents-header{text-align:center;margin-bottom:30px}.header-nav{margin-bottom:20px}.book-title{margin:0;color:var(--main-color);font-size:2.2rem}.book-intro{background:#fff;padding:25px;border-radius:var(--border-radius);box-shadow:var(--shadow-md);margin-bottom:30px;line-height:1.7}.chapters-list{background:#fff;padding:25px;border-radius:var(--border-radius);box-shadow:var(--shadow-md);margin-bottom:30px}.chapters-title{margin:0 0 20px;color:var(--main-color);font-size:1.5rem;text-align:center;border-bottom:2px solid var(--accent-color);padding-bottom:10px}.chapters-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:15px}.chapter-item{border:1px solid #e0e6ed;border-radius:8px;overflow:hidden;transition:var(--transition-normal)}.chapter-item:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.chapter-link{display:block;padding:15px;text-decoration:none;color:inherit}.chapter-link:hover{background:var(--light-gray)}.chapter-number{font-size:.9rem;color:var(--accent-color);font-weight:600;margin-bottom:5px}.chapter-title{font-size:1rem;color:var(--main-color);font-weight:500;line-height:1.4}.quick-actions{text-align:center}.chapter-navigation{background:inherit;border-bottom:1px solid #ddd;padding:10px 20px;display:flex;justify-content:space-between;align-items:center;position:sticky;top:60px;z-index:99}.dark-theme .chapter-navigation{border-bottom-color:#444}.nav-center{flex:1;text-align:center}.chapter-progress{font-size:.9rem;color:#666;font-weight:500}.dark-theme .chapter-progress{color:#aaa}.chapter-metadata{max-width:800px;margin:20px auto;padding:0 20px;text-align:center}.chapter-main-title{margin:0 0 10px;color:var(--main-color);font-size:1.6rem}.dark-theme .chapter-main-title{color:#e0e0e0}.chapter-info{display:flex;justify-content:center;gap:20px;font-size:.9rem;color:#666;margin-bottom:20px}.dark-theme .chapter-info{color:#aaa}.chapter-content{max-width:800px;margin:20px auto;padding:0 20px;line-height:1.8;min-height:60vh}.chapter-bottom-nav{max-width:800px;margin:40px auto 20px;padding:20px;display:flex;justify-content:space-between;align-items:center;border-top:1px solid #ddd;gap:20px}.dark-theme .chapter-bottom-nav{border-top-color:#444}.bottom-nav-left,.bottom-nav-right{flex:1}.bottom-nav-right{text-align:right}.bottom-nav-center{text-align:center}.reading-tips{text-align:center;margin-top:5px}.reading-tips small{color:#999;font-size:.8rem}.dark-theme .reading-tips small{color:#666}.btn-outline{background:transparent;border:1px solid var(--accent-color);color:var(--accent-color)}.btn-outline:hover{background:var(--accent-color);color:#fff}.btn-lg{padding:12px 24px;font-size:1.1rem}@media (max-width: 768px){.book-contents-container{padding:15px}.chapters-grid{grid-template-columns:1fr}.reading-controls{flex-direction:column;gap:10px;padding:15px 10px}.controls-left,.controls-right{order:2}.controls-center{order:1}.chapter-navigation{flex-direction:column;gap:10px;top:140px}.nav-left,.nav-right{order:2}.nav-center{order:1}.chapter-bottom-nav{flex-direction:column;gap:15px}.bottom-nav-left,.bottom-nav-right{text-align:center}.chapter-info{flex-direction:column;gap:5px}}@media (max-width: 768px){.books-grid{grid-template-columns:1fr}.reading-controls{flex-direction:column;gap:10px;padding:15px 10px}.controls-left,.controls-right{order:2}.controls-center{order:1}.metadata-grid{grid-template-columns:1fr}.book-content{padding:0 15px}.book-content .paragraph{text-indent:1.5em}}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-duration:.001ms!important;transition-duration:.001ms!important}}.llm-agents-container{max-width:1000px;margin:0 auto;display:flex;flex-direction:column;height:85vh;height:calc(100vh - 120px);height:calc(100vh - 120px - env(safe-area-inset-bottom));padding:0 env(safe-area-inset-left) env(safe-area-inset-bottom) env(safe-area-inset-right)}.chat-header{text-align:center;margin-bottom:20px;padding:20px;background:var(--gradient-blue);border-radius:var(--border-radius);color:#fff;box-shadow:var(--shadow-md);padding-top:max(20px,env(safe-area-inset-top))}.chat-header h1{color:#fff;margin-bottom:10px;font-size:2.2rem;font-size:clamp(1.5rem,5vw,2.2rem)}.chat-header p{opacity:.9;font-size:1.1rem;margin:0;font-size:clamp(.9rem,3vw,1.1rem)}.api-selector{background:#fff;border-radius:var(--border-radius);padding:20px;margin-bottom:20px;box-shadow:var(--shadow-sm);border:1px solid #e1e8ed}.api-controls{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:20px;margin-bottom:20px}.control-group{display:flex;flex-direction:column}.control-group label{font-weight:600;color:var(--main-color);margin-bottom:5px;font-size:.9rem}.api-select,.model-select{padding:10px;border:2px solid #e1e8ed;border-radius:6px;font-size:14px;transition:var(--transition-normal);background:#fff}.api-select:focus,.model-select:focus{border-color:var(--accent-color);outline:none;box-shadow:0 0 0 3px #3498db1a}.api-key-group{grid-column:1 / -1}.api-key-input-wrapper{position:relative;display:flex}.api-key-input{flex:1;padding:12px 45px 12px 12px;border:2px solid #e1e8ed;border-radius:6px;font-size:16px;transition:var(--transition-normal);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff}.api-key-input:focus{border-color:var(--accent-color);outline:none;box-shadow:0 0 0 3px #3498db1a}.show-key-button{position:absolute;right:8px;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;padding:5px;border-radius:4px;transition:var(--transition-normal)}.show-key-button:hover{background:#3498db1a}.api-key-info{margin-top:5px}.api-key-info small{color:#666;font-size:.8rem}.api-key-info a{color:var(--accent-color);text-decoration:none}.api-key-info a:hover{text-decoration:underline}.api-info{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:20px;padding-top:20px;border-top:1px solid #e1e8ed}.info-section h4{color:var(--main-color);margin-bottom:10px;font-size:1rem}.info-section p{margin:5px 0;color:#666;font-size:.9rem;line-height:1.5}.chat-container{flex:1;display:flex;flex-direction:column;background:#fff;border-radius:var(--border-radius);box-shadow:var(--shadow-md);overflow:hidden;min-height:500px}.messages-container{flex:1;overflow-y:auto;padding:20px;display:flex;flex-direction:column;gap:15px;min-height:300px}.message{display:flex;gap:12px;max-width:85%;animation:messageSlideIn .3s ease-out;margin-bottom:10px;opacity:1;visibility:visible}.message.user{align-self:flex-end;flex-direction:row-reverse}.message.assistant{align-self:flex-start}.message.error .message-content{background:#fee;border-left:4px solid #e74c3c}@keyframes messageSlideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.message-avatar{flex-shrink:0;width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.7rem;font-weight:600}.user-avatar{background:var(--gradient-blue);color:#fff}.assistant-avatar{background:var(--gradient-orange);color:#fff}.message-content{flex:1;background:#f8f9fa;border-radius:12px;padding:12px 16px;position:relative;min-height:40px;display:block}.message.user .message-content{background:var(--gradient-blue);color:#fff}.message-header{display:flex;align-items:center;gap:8px;margin-bottom:8px;font-size:.8rem;opacity:.7}.message.user .message-header{color:#fffc}.message-role{font-weight:600}.message-model{font-style:italic;font-size:.75rem}.message-time{margin-left:auto;font-size:.75rem}.message-text{line-height:1.6;color:inherit;white-space:pre-wrap;word-wrap:break-word;min-height:20px}.user-message-text{white-space:pre-wrap;word-wrap:break-word}.message-text h1,.message-text h2,.message-text h3,.message-text h4,.message-text h5,.message-text h6{margin:16px 0 8px;color:inherit}.message-text p{margin:8px 0}.message-text ul,.message-text ol{margin:8px 0;padding-left:20px}.message-text li{margin:4px 0}.code-block{background:#2d3748;color:#e2e8f0;padding:16px;border-radius:8px;overflow-x:auto;margin:12px 0;font-family:Courier New,monospace;font-size:.9rem;line-height:1.4}.inline-code{background:#0000001a;padding:2px 6px;border-radius:4px;font-family:Courier New,monospace;font-size:.9rem}.message.user .inline-code{background:#fff3}.markdown-blockquote{border-left:4px solid #ddd;margin:12px 0;padding:8px 16px;background:#00000005;border-radius:0 4px 4px 0}.table-wrapper{overflow-x:auto;margin:12px 0}.markdown-table{width:100%;border-collapse:collapse;font-size:.9rem}.markdown-table th,.markdown-table td{border:1px solid #ddd;padding:8px 12px;text-align:left}.markdown-table th{background:#0000000d;font-weight:600}.typing-indicator{display:flex;gap:4px;align-items:center;padding:8px 0}.typing-indicator span{width:8px;height:8px;border-radius:50%;background:#666;animation:typing 1.4s infinite ease-in-out}.typing-indicator span:nth-child(1){animation-delay:-.32s}.typing-indicator span:nth-child(2){animation-delay:-.16s}@keyframes typing{0%,80%,to{transform:scale(.8);opacity:.5}40%{transform:scale(1);opacity:1}}.input-container{border-top:1px solid #e1e8ed;padding:20px;background:#f8f9fa}.input-wrapper{display:flex;flex-direction:column;gap:12px}.message-input{width:100%;padding:12px;border:2px solid #e1e8ed;border-radius:8px;font-size:16px;font-family:inherit;resize:vertical;min-height:80px;transition:var(--transition-normal);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff}.message-input:focus{border-color:var(--accent-color);outline:none;box-shadow:0 0 0 3px #3498db1a}.message-input:disabled{background:#f5f5f5;cursor:not-allowed}.input-actions{display:flex;justify-content:space-between;align-items:center}.clear-button,.send-button{padding:10px 20px;border:none;border-radius:6px;font-size:14px;font-weight:600;cursor:pointer;transition:var(--transition-normal)}.clear-button{background:#f8f9fa;color:#666;border:1px solid #e1e8ed}.clear-button:hover{background:#e9ecef;color:#333}.send-button{background:var(--gradient-blue);color:#fff;min-width:100px}.send-button:hover:not(:disabled){transform:translateY(-1px);box-shadow:var(--shadow-md)}.send-button:disabled{background:#ccc;cursor:not-allowed;transform:none;box-shadow:none}@media (max-width: 768px){.llm-agents-container{height:calc(100vh - 80px);height:calc(100vh - 80px - env(safe-area-inset-bottom));margin:0 8px;padding:0 8px env(safe-area-inset-bottom) 8px}.chat-header{padding:15px;margin-bottom:15px;border-radius:12px}.chat-header h1{font-size:clamp(1.3rem,6vw,1.8rem);margin-bottom:8px}.chat-header p{font-size:clamp(.85rem,4vw,1rem)}.api-selector{padding:12px;margin-bottom:12px;border-radius:12px}.api-controls,.api-info{grid-template-columns:1fr;gap:12px}.message{max-width:92%}.messages-container{padding:12px;gap:12px}.input-container{padding:12px;padding-bottom:max(12px,env(safe-area-inset-bottom))}.message-input{min-height:60px;font-size:16px;border-radius:12px}.input-actions{flex-direction:column;gap:8px;margin-top:8px}.clear-button,.send-button{width:100%;padding:12px 20px;font-size:16px;border-radius:8px;min-height:44px}nav{padding:0 12px;gap:2px}nav a{padding:12px 16px;font-size:.85rem;min-width:44px;min-height:44px}}@media (max-width: 480px){.llm-agents-container{margin:0 4px;padding:0 4px env(safe-area-inset-bottom) 4px}.chat-header h1{font-size:clamp(1.2rem,7vw,1.5rem);margin-bottom:6px}.chat-header p{font-size:clamp(.8rem,4.5vw,1rem)}.chat-header{padding:12px;margin-bottom:12px}.api-selector{padding:10px;margin-bottom:10px}.message-input{min-height:50px;padding:10px}.input-container{padding:10px;padding-bottom:max(10px,env(safe-area-inset-bottom))}.clear-button,.send-button{padding:10px 16px;font-size:15px}.message-content{padding:10px 12px}.message-avatar{width:32px;height:32px;font-size:.65rem}nav a{padding:10px 12px;font-size:.8rem;letter-spacing:.3px}}
