:root{--primary: #0f172a;--accent: #2563eb;--bg: #ffffff;--text: #334155;--sidebar-width: 320px;--sidebar-bg: #f8fafc;--border: #e2e8f0}body.mode-dark{--primary: #f8fafc;--accent: #60a5fa;--bg: #0f172a;--text: #94a3b8;--sidebar-bg: #1e293b;--border: #334155}body.mode-sepia{--primary: #433422;--accent: #8b4513;--bg: #f4ecd8;--text: #5f4b32;--sidebar-bg: #e8dfc8;--border: #d3c7a8}body{background-color:var(--bg);color:var(--text);transition:background .3s,color .3s}#progress-bar{position:fixed;top:0;left:0;height:4px;background:var(--accent);width:0%;z-index:2000;transition:width .1s}#top-controls{position:fixed;top:20px;right:20px;background:var(--bg);padding:5px 15px;border-radius:50px;box-shadow:0 4px 15px #0000001a;z-index:1000;display:flex;align-items:center;gap:15px;border:1px solid var(--border);transition:transform .3s cubic-bezier(.4,0,.2,1),opacity .3s}#top-controls.hidden{transform:translateY(-100px);opacity:0;pointer-events:none}.mode-controls{display:flex;gap:5px;background:var(--border);padding:3px;border-radius:20px}.mode-btn{width:24px;height:24px;border-radius:50%;border:none;cursor:pointer}.mode-btn.light{background:#fff;border:1px solid #ccc}.mode-btn.dark{background:#0f172a}.mode-btn.sepia{background:#f4ecd8;border:1px solid #d3c7a8}.divider{width:1px;height:20px;background:var(--border)}.font-controls{display:flex;align-items:center;gap:8px}.font-label{font-size:.7rem;color:#64748b;font-weight:700}.font-controls button{border:none;background:none;cursor:pointer;font-weight:700;color:var(--text);padding:0 5px}.ebook-container{display:flex;min-height:100vh}#sidebar{width:var(--sidebar-width);height:100vh;position:fixed;left:0;top:0;background:var(--sidebar-bg);border-right:1px solid var(--border);padding:30px 20px;overflow-y:auto;z-index:100;transition:transform .3s cubic-bezier(.165,.84,.44,1)}#sidebar h3{font-size:.85rem;text-transform:uppercase;letter-spacing:2px;color:var(--text);margin-bottom:25px;opacity:.7;font-weight:800;text-align:center;border-bottom:1px solid var(--border);padding-bottom:15px}.home-link{display:flex;align-items:center;justify-content:center;gap:8px;color:var(--accent);text-decoration:none;font-weight:700;margin-bottom:25px;padding:12px 20px;background:#2563eb14;border-radius:50px;font-size:.85rem;transition:all .2s;width:100%;border:1px solid transparent}.home-link:hover{background:var(--accent);color:#fff;transform:translateY(-2px);box-shadow:0 4px 12px #2563eb40;border-color:transparent}#main-wrapper{margin-left:var(--sidebar-width);flex:1;padding:40px 80px 80px;max-width:1100px;font-family:Lora,serif;font-size:1.15rem}.reader-breadcrumb{display:flex;align-items:center;gap:8px;font-family:Inter,sans-serif;font-size:.8rem;font-weight:600;color:#94a3b8;margin-bottom:30px}.reader-breadcrumb a{color:#64748b;text-decoration:none;transition:color .2s;white-space:nowrap}.reader-breadcrumb a:hover{color:var(--accent)}.reader-breadcrumb .sep{color:#cbd5e1;font-weight:400}.reader-breadcrumb .curr{color:var(--accent);font-weight:700;overflow:hidden;text-overflow:ellipsis}.reader-breadcrumb .book-link{color:#475569}html{scroll-behavior:smooth}#content{line-height:1.8;letter-spacing:-.01em}#content h1,#content h2,#content h3{scroll-margin-top:100px}#content h1{font-size:2.5rem;border-bottom:2px solid rgba(0,132,255,.2);padding-bottom:20px;color:var(--primary);font-weight:800;margin:60px 0 35px;line-height:1.25;letter-spacing:-.5px}#content h2{font-size:1.75rem;color:var(--primary);margin:50px 0 20px;font-weight:700;position:relative;padding-left:15px;border-left:4px solid var(--accent);line-height:1.3}#content h3{font-size:1.35rem;color:var(--text);margin:35px 0 15px;font-weight:700;line-height:1.4}#content p{margin-bottom:20px;text-align:justify}#content ul,#content ol{margin-bottom:25px;padding-left:25px}#content li{margin-bottom:10px}#content pre{background:#f1f5f9;color:#334155;padding:25px;border-radius:12px;overflow-x:auto;margin:30px 0;position:relative;font-family:Consolas,Monaco,Courier New,monospace;font-size:.9rem;line-height:1.6;border:1px solid #e2e8f0;box-shadow:0 4px 6px #00000005}#content code{background:#e2e8f0;padding:2px 6px;border-radius:4px;font-family:Consolas,Monaco,Courier New,monospace;color:#ef4444;font-size:.9em;font-weight:600}#content pre code{background:transparent;color:inherit;padding:0;font-weight:400;border:none;color:#0f172a}body.mode-dark #content pre{background:#1e293b;color:#e2e8f0;border-color:#334155}body.mode-dark #content code{background:#ffffff1a;color:#60a5fa}body.mode-dark #content pre code{color:inherit}.copy-btn{position:absolute;top:10px;right:10px;background:#fff;border:1px solid #cbd5e1;color:#64748b;padding:5px 10px;border-radius:6px;cursor:pointer;font-size:.75rem;font-family:Inter,sans-serif;font-weight:600;transition:all .2s;z-index:10;opacity:.7}.copy-btn:hover{opacity:1;border-color:var(--accent);color:var(--accent)}body.mode-dark .copy-btn{background:#334155;border-color:#475569;color:#94a3b8}.part-marker{background:transparent;color:var(--primary);padding:40px 0;margin:100px 0 60px;font-weight:900;font-size:1.8rem;text-transform:uppercase;letter-spacing:3px;position:relative;text-align:center;border-top:2px solid rgba(0,132,255,.1);border-bottom:2px solid rgba(0,132,255,.1)}.part-marker:before{content:attr(data-title);background:var(--gradient-tech);-webkit-background-clip:text;-webkit-text-fill-color:transparent;display:block}.part-marker:after{display:none}#content img{max-width:100%;height:auto;border-radius:20px;margin:35px 0;box-shadow:0 15px 40px #0000001a;display:block;transition:transform .3s}#content img:hover{transform:scale(1.02)}@media (min-width: 768px){#content img{max-width:45%;float:right;margin:10px 0 30px 40px;border:6px solid white}#content img:nth-of-type(2n){float:left;margin:10px 40px 30px 0}#content img[alt*=cover],#content img[alt*=Bìa],#content img[alt*=Architecture],#content img.full-width{float:none;max-width:100%;margin:50px auto;display:block;border:none;box-shadow:0 20px 50px #00000026}}#content pre{background:#001a33;color:#e2e8f0;padding:20px;border-radius:12px;overflow-x:auto;margin:25px 0;position:relative;font-family:Consolas,Monaco,Courier New,monospace;font-size:.82rem;line-height:1.6;border:1px solid rgba(0,210,255,.1)}#content code{background:#0084ff14;padding:2px 6px;border-radius:4px;font-family:Consolas,Monaco,Courier New,monospace;color:var(--accent);font-size:.85em;font-weight:600}#content pre code{background:transparent;color:inherit;padding:0;font-weight:400;border:none;font-size:.9rem}#content table{width:100%;border-collapse:collapse;margin:25px 0;font-size:.9rem;overflow-x:auto;display:block;border-radius:12px;border:1px solid var(--border);box-shadow:0 2px 8px #0000000a}#content table thead{background:linear-gradient(135deg,#0f172a,#1e3a5f);color:#fff}#content table th{padding:14px 16px;text-align:left;font-weight:700;font-size:.85rem;text-transform:uppercase;letter-spacing:.5px;border-bottom:2px solid var(--accent);white-space:nowrap}#content table td{padding:12px 16px;border-bottom:1px solid var(--border);vertical-align:top}#content table tbody tr:nth-child(2n){background:#0084ff08}#content table tbody tr:hover{background:#2563eb14}#content table tbody tr:last-child td{border-bottom:none}body.mode-dark #content table{border-color:#334155}body.mode-dark #content table thead{background:linear-gradient(135deg,#1e293b,#334155)}body.mode-dark #content table td{border-color:#334155}body.mode-dark #content table tbody tr:nth-child(2n){background:#ffffff05}body.mode-sepia #content table thead{background:linear-gradient(135deg,#5f4b32,#8b6914)}@media (max-width: 768px){#content table{font-size:.8rem}#content table th,#content table td{padding:10px 12px}}.toc-list{list-style:none;padding:0}.toc-link{text-decoration:none;color:var(--text);padding:8px 12px;border-radius:6px;transition:all .2s;display:block;font-weight:500;font-size:.9rem}.toc-link:hover{background-color:var(--border);color:var(--primary)}.toc-link.active{background-color:#2563eb1a;color:var(--accent);font-weight:600}.toggle-sidebar{display:none;position:fixed;bottom:30px;right:30px;background:var(--accent);color:#fff;width:56px;height:56px;border-radius:50%;justify-content:center;align-items:center;box-shadow:0 4px 20px #2563eb66;z-index:1000;font-size:1.5rem;cursor:pointer;border:none}@media (max-width: 768px){#sidebar{transform:translate(-100%);width:85%;max-width:350px;box-shadow:10px 0 30px #0000001a}#sidebar.open{transform:translate(0)}#main-wrapper{margin-left:0;padding:30px 20px;width:100%}.toggle-sidebar{display:flex}#content h1{font-size:2rem;margin-top:40px}#content h2{font-size:1.5rem}.sidebar-header{display:flex;align-items:center;gap:15px;margin-bottom:25px;padding-bottom:15px;border-bottom:1px solid var(--border)}.sidebar-header h3{margin:0;border:none;padding:0;text-align:left}.home-link{margin:0;width:auto;padding:8px 15px}#top-controls{top:15px;right:15px;left:15px;padding:8px 12px;gap:10px;border-radius:14px;justify-content:space-between}#auth-controls{display:none}}.locked-chapter{position:relative;min-height:400px;margin-bottom:100px!important}.blurred-content{filter:blur(12px);opacity:.2;pointer-events:none;user-select:none}.locked-overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:50;display:flex;justify-content:center;align-items:flex-start;padding-top:150px;background:linear-gradient(to bottom,transparent,var(--bg) 60%)}.locked-card{background:#fff;padding:50px;border-radius:32px;text-align:center;border:1px solid rgba(0,132,255,.1);box-shadow:0 30px 60px #001a3326;max-width:500px;width:100%}.locked-card i{font-size:3.5rem;color:#f59e0b;margin-bottom:25px;display:block}.locked-card h3{font-size:1.8rem;margin-bottom:15px;border:none!important;color:var(--primary);font-weight:800}.locked-card p{color:var(--text-light);margin-bottom:30px;font-size:1.05rem}.toc-list ul{list-style:none;padding-left:15px;max-height:0;overflow:hidden;transition:max-height .3s cubic-bezier(0,1,0,1);border-left:1px dashed rgba(0,132,255,.15);margin-left:12px}#sidebar-overlay{position:fixed;inset:0;background:#0000004d;z-index:90;opacity:0;pointer-events:none;transition:opacity .2s}#sidebar.open~#sidebar-overlay{opacity:1;pointer-events:auto}.toc-link{text-decoration:none;color:var(--text);padding:10px 14px;border-radius:12px;transition:all .25s;display:block;font-weight:500;font-size:.95rem;border:1px solid transparent}.toc-link:hover{background:#0084ff0d;color:var(--accent);transform:translate(5px)}.toc-link.active{background:#2563eb14;color:var(--accent)!important;font-weight:700;box-shadow:none}.toc-part-header{background:transparent;color:var(--primary);padding:8px 10px;border-radius:6px;margin:15px 0 2px;font-size:.85rem;font-weight:700;text-transform:uppercase;letter-spacing:.5px;cursor:pointer;display:flex;justify-content:flex-start;align-items:center;transition:all .2s;user-select:none;gap:10px}.toc-part-header:hover{background:#0084ff14;color:var(--accent)}.toc-sublist{overflow:hidden;max-height:0;padding-left:15px;transition:max-height .35s ease-out}.chapter-subheadings{padding-left:15px;overflow:hidden;transition:max-height .3s ease}.chapter-header{display:flex;align-items:center;gap:8px}.chapter-caret{width:12px;text-align:center;font-size:.75rem;color:#64748b;cursor:pointer;transition:transform .2s}.chapter-caret:hover{color:var(--accent)}.sub-link{font-size:.85rem;color:#64748b;padding:4px 10px;border-left:2px solid transparent}.sub-link:hover{color:var(--accent);border-left-color:var(--accent);background:transparent;transform:none}.toc-link.locked:after{content:""!important;font-family:"Font Awesome 6 Free";font-weight:900;margin-left:8px;color:#f59e0b!important;opacity:1!important}.appsheet-formula{font-family:Fira Code,Consolas,monospace}.appsheet-func{color:#56b6c2;font-weight:600}.appsheet-table,.appsheet-column{color:#e5c07b}.appsheet-thisrow{color:#c678dd}.appsheet-paren{color:#abb2bf}.appsheet-operator{color:#56b6c2}.appsheet-string{color:#98c379}.appsheet-number{color:#d19a66}.appsheet-comment{color:#5c6370;font-style:italic}.json-key{color:#e06c75}.json-string{color:#98c379}.json-number{color:#d19a66}.json-boolean{color:#56b6c2}.json-null{color:#c678dd}.json-bracket{color:#abb2bf}.prompt-role{color:#c678dd;font-weight:600}.prompt-task{color:#56b6c2;font-weight:600}.prompt-placeholder{color:#e5c07b}.prompt-keyword{color:#e06c75}
