*{margin:0;padding:0;box-sizing:border-box}:root{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,sans-serif;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;min-width:320px;min-height:100vh;background:#f5f5f5}#root{width:100%;height:100vh;margin:0;padding:0}h1,h2,h3,h4,h5,h6{line-height:1.2}button{font-family:inherit;cursor:pointer;transition:all .2s}a{color:inherit;text-decoration:none}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:#f1f1f1}::-webkit-scrollbar-thumb{background:#888;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#555}.page-navigation{position:absolute;bottom:20px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:20px;background:#fffffff2;padding:10px 20px;border-radius:30px;box-shadow:0 2px 10px #0000001a;z-index:100;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.nav-arrow{width:36px;height:36px;border:2px solid #ddd;background:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;font-size:18px;font-weight:700;color:#666}.nav-arrow:hover:not(:disabled){background:#f0f0f0;border-color:#999;transform:scale(1.1);color:#333}.nav-arrow:disabled{opacity:.3;cursor:not-allowed}.nav-arrow.prev{margin-right:10px}.nav-arrow.next{margin-left:10px}.page-indicators{display:flex;gap:8px;align-items:center}.page-dot{width:32px;height:32px;border:2px solid #ddd;background:#fff;border-radius:50%;cursor:pointer;transition:all .3s ease;font-size:14px;font-weight:600;color:#666;display:flex;align-items:center;justify-content:center}.page-dot:hover{background:#f5f5f5;border-color:#999;transform:scale(1.1)}.page-dot.active{background:#c00;border-color:#c00;color:#fff;transform:scale(1.15);box-shadow:0 2px 8px #cc00004d}.page-counter{font-size:14px;font-weight:500;color:#666;padding:0 10px;min-width:50px;text-align:center}@media (max-width: 768px){.page-navigation{bottom:10px;padding:8px 15px;gap:15px}.nav-arrow{width:32px;height:32px;font-size:16px}.page-dot{width:28px;height:28px;font-size:12px}.page-counter{font-size:12px}}@keyframes slideIn{0%{opacity:0;transform:translate(-50%) translateY(20px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.page-navigation{animation:slideIn .3s ease-out}.notes-toggle{position:fixed;bottom:30px;right:30px;width:50px;height:50px;border-radius:50%;background:#c00;border:none;color:#fff;font-size:24px;cursor:pointer;box-shadow:0 4px 12px #00000026;transition:all .3s ease;z-index:101;display:flex;align-items:center;justify-content:center}.notes-toggle:hover{transform:scale(1.1);box-shadow:0 6px 16px #0003;background:#a00}.notes-panel{position:fixed;right:-400px;top:0;bottom:0;width:400px;background:#fff;box-shadow:-2px 0 10px #0000001a;transition:right .3s ease;z-index:99;display:flex;flex-direction:column;overflow:hidden}.notes-panel.expanded{right:0}.notes-header{padding:20px;background:linear-gradient(135deg,#c00,#a00);color:#fff;display:flex;justify-content:space-between;align-items:center;box-shadow:0 2px 8px #0000001a}.notes-header h3{margin:0;font-size:18px;font-weight:600}.notes-close{background:none;border:none;color:#fff;font-size:28px;cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:background .2s ease}.notes-close:hover{background:#fff3}.notes-content{flex:1;padding:20px;overflow-y:auto;background:#fafafa}.notes-content h4{color:#333;font-size:16px;font-weight:600;margin:20px 0 10px;padding-bottom:8px;border-bottom:2px solid #e0e0e0}.notes-content h4:first-child{margin-top:0}.notes-content p{color:#666;line-height:1.6;margin:10px 0;font-size:14px}.notes-content li{color:#666;line-height:1.6;margin:8px 0 8px 20px;font-size:14px}.notes-content code{background:#f0f0f0;padding:2px 6px;border-radius:3px;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:13px;color:#d14;border:1px solid #e0e0e0}.notes-content .code-block{margin:15px 0;border-radius:8px;overflow:hidden;background:#282c34;box-shadow:0 2px 8px #0000001a}.notes-content .code-language{padding:8px 15px;background:#21252b;color:#61dafb;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid #3a3f4b}.notes-content .code-block pre{margin:0;padding:15px;overflow-x:auto;background:#282c34;border:none}.notes-content .code-block code{display:block;background:transparent;color:#abb2bf;padding:0;border:none;font-family:JetBrains Mono,Monaco,Menlo,Ubuntu Mono,monospace;font-size:13px;line-height:1.6;white-space:pre}.notes-content .code-block pre::-webkit-scrollbar{height:6px}.notes-content .code-block pre::-webkit-scrollbar-track{background:#1e2127}.notes-content .code-block pre::-webkit-scrollbar-thumb{background:#4b5263;border-radius:3px}.notes-content .code-block pre::-webkit-scrollbar-thumb:hover{background:#5c6370}.notes-content::-webkit-scrollbar{width:8px}.notes-content::-webkit-scrollbar-track{background:#f0f0f0}.notes-content::-webkit-scrollbar-thumb{background:#ccc;border-radius:4px}.notes-content::-webkit-scrollbar-thumb:hover{background:#aaa}@media (max-width: 768px){.notes-panel{width:100%;right:-100%}.notes-toggle{bottom:70px;right:20px;width:45px;height:45px;font-size:20px}}@keyframes slideInNotes{0%{right:-400px;opacity:0}to{right:0;opacity:1}}.notes-panel.expanded{animation:slideInNotes .3s ease-out}.graph-container{flex:1;position:relative;background:#fff;border-radius:8px;margin:1rem;box-shadow:0 2px 8px #0000001a;overflow:auto}.graph-svg{width:100%;height:100%;cursor:grab}.graph-svg:active{cursor:grabbing}.node:hover .node-shape{filter:drop-shadow(0 0 12px rgba(0,0,0,.3));stroke-width:3}.node.selected .node-shape{filter:drop-shadow(0 0 20px rgba(204,0,0,.6));stroke-width:4!important}.node.highlighted .node-shape{filter:drop-shadow(0 0 15px rgba(255,193,7,.8))}.node-shape{transition:filter .3s,stroke-width .3s}.node-label,.node-version{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;text-shadow:1px 1px 2px rgba(0,0,0,.3);-webkit-user-select:none;user-select:none}.node-loc{font-family:monospace;-webkit-user-select:none;user-select:none}.rails-node{filter:drop-shadow(0 0 10px rgba(204,0,0,.3))}.link{transition:stroke-opacity .3s,stroke-width .3s}.link:hover{stroke-opacity:.8!important;stroke-width:3!important}.module-node{filter:drop-shadow(0 0 5px rgba(0,0,0,.2))}.module-center-node{filter:drop-shadow(0 0 8px rgba(0,0,0,.3))}.gem-center-node{filter:drop-shadow(0 0 10px rgba(204,0,0,.4))}.component-node{filter:drop-shadow(0 0 4px rgba(156,39,176,.3))}.class-node{filter:drop-shadow(0 0 6px rgba(123,31,162,.4));transition:all .3s ease}.class-node:hover{filter:drop-shadow(0 0 12px rgba(123,31,162,.6))}.flow-node{filter:drop-shadow(0 0 6px rgba(0,0,0,.3));transition:all .3s ease}.flow-node:hover{filter:drop-shadow(0 0 12px rgba(0,0,0,.5))}.gem-view-hint{position:absolute;top:1rem;right:1rem;background:#000c;color:#fff;padding:1rem;border-radius:8px;font-size:.95rem;text-align:center;box-shadow:0 4px 12px #0000004d;border:1px solid rgba(255,255,255,.2);animation:slideIn .3s ease-out}.gem-view-hint small{opacity:.8;font-size:.85rem}.gem-view-hint kbd{display:inline-block;padding:2px 6px;background:#fff3;border:1px solid rgba(255,255,255,.4);border-radius:3px;font-family:monospace;font-size:.9rem}@keyframes slideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.page-title{position:absolute;top:1rem;left:50%;transform:translate(-50%);background:#fffffff2;padding:.5rem 2rem;border-radius:8px;box-shadow:0 2px 8px #0000001a;z-index:10}.page-title h2{margin:0;color:#333;font-size:1.5rem;font-weight:600;text-align:center}.subflow-counter{position:absolute;top:4rem;left:50%;transform:translate(-50%);z-index:10;background:#fffffff2;padding:8px 16px;border-radius:6px;box-shadow:0 2px 8px #0000001a;font-size:.9rem;color:#666}.subflow-counter kbd{display:inline-block;padding:2px 6px;margin:0 2px;font-size:.85em;font-family:SF Mono,Monaco,Courier New,monospace;background:#f4f4f4;border:1px solid #ccc;border-radius:3px;box-shadow:0 1px #0003}.mermaid-view{width:100%;height:100%;overflow:auto;background:#f5f5f5;position:relative;-webkit-user-select:none;user-select:none}.mermaid-container{transform-origin:center center;cursor:grab;transition:none;width:max-content;min-width:100%;height:max-content;min-height:100%;padding:40px;position:relative;display:flex;justify-content:flex-start;align-items:flex-start}.mermaid-container.dragging{cursor:grabbing}.mermaid-container .mermaid{display:inline-block;width:max-content;max-width:none;margin:auto}.mermaid-container svg{display:block;width:auto!important;height:auto!important;max-width:none!important;font-size:14px}.mermaid-view .loading{color:#666;font-size:18px;font-style:italic;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.mermaid-controls{position:absolute;bottom:20px;right:20px;z-index:100;display:flex;gap:8px;background:#fff;padding:8px;border-radius:8px;box-shadow:0 2px 8px #00000026}.zoom-btn{width:36px;height:36px;border:1px solid #ddd;background:#fff;border-radius:6px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:16px;transition:all .2s}.zoom-btn:hover{background:#f0f0f0;border-color:#999;transform:scale(1.05)}.zoom-btn:active{transform:scale(.95)}.zoom-level{display:flex;align-items:center;padding:0 8px;font-size:14px;color:#666;font-weight:500;min-width:50px}.mermaid-hint{position:absolute;bottom:20px;left:20px;background:#000000b3;color:#fff;padding:6px 12px;border-radius:4px;font-size:12px;pointer-events:none;z-index:99}.mermaid-view .node{transition:all .3s ease}.mermaid-view .node:hover{filter:brightness(1.1) drop-shadow(0 2px 4px rgba(0,0,0,.2))}.mermaid-view .node.selected{filter:drop-shadow(0 0 8px #FFD54F)}.mermaid-view .node.highlighted{filter:drop-shadow(0 0 8px #FFEB3B);animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,to{filter:drop-shadow(0 0 8px #FFEB3B)}50%{filter:drop-shadow(0 0 16px #FFD54F)}}.mermaid-view .edgePath path{stroke-width:2px;opacity:.8;transition:opacity .3s ease}.mermaid-view .edgePath:hover path{opacity:1;stroke-width:3px}.mermaid-view .nodeLabel{font-size:14px!important}.mermaid-view .cluster rect{fill-opacity:.1!important;stroke-width:2px!important}.mermaid-view .cluster text{font-size:16px!important;font-weight:600!important}@media (max-width: 768px){.mermaid-controls{bottom:10px;right:10px;padding:6px;gap:6px}.zoom-btn{width:32px;height:32px;font-size:14px}.mermaid-hint{display:none}}.info-panel{width:350px;background:#fff;border-radius:8px;margin:1rem 1rem 1rem 0;padding:1.5rem;box-shadow:0 2px 8px #0000001a;overflow-y:auto;animation:slideIn .3s ease-out}@keyframes slideIn{0%{transform:translate(20px);opacity:0}to{transform:translate(0);opacity:1}}.info-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;padding-bottom:1rem;border-bottom:2px solid #CC0000}.info-header h2{margin:0;color:#333;font-size:1.5rem}.info-type{background:#c00;color:#fff;padding:.25rem .75rem;border-radius:12px;font-size:.85rem;font-weight:500}.info-description{color:#666;line-height:1.6;margin-bottom:1.5rem}.info-section{margin-bottom:1.5rem}.info-section h3{color:#333;font-size:1.1rem;margin-bottom:.75rem;font-weight:600}.info-stats{display:flex;flex-direction:column;gap:.5rem}.stat{display:flex;justify-content:space-between;padding:.5rem;background:#f5f5f5;border-radius:4px}.stat-label{color:#666;font-weight:500}.stat-value{color:#333;font-weight:600;font-family:monospace}.module-list{list-style:none;padding:0;margin:0}.module-item{padding:.5rem;background:#f9f9f9;border-left:3px solid #CC0000;margin-bottom:.5rem;font-family:monospace;font-size:.9rem;color:#333}.dependency-list{display:flex;flex-direction:column;gap:.5rem}.dependency-item{display:flex;justify-content:space-between;padding:.5rem;background:#f9f9f9;border-radius:4px;transition:background .2s}.dependency-item:hover{background:#efefef}.dep-name{color:#333;font-weight:500}.dep-type{color:#666;font-size:.85rem;font-style:italic}.info-footer{margin-top:2rem;padding-top:1rem;border-top:1px solid #e0e0e0}.github-link{display:inline-block;color:#c00;text-decoration:none;font-weight:500;transition:color .2s}.github-link:hover{color:#900;text-decoration:underline}.show-more-btn{width:100%;padding:.5rem;margin-top:.5rem;background:#f5f5f5;border:1px solid #e0e0e0;border-radius:4px;color:#666;font-size:.9rem;cursor:pointer;transition:all .2s;text-align:center}.show-more-btn:hover{background:#efefef;color:#333;border-color:#ccc}.badge-class{background:#7b1fa2;color:#fff;padding:.25rem .75rem;border-radius:12px;font-size:.85rem;font-weight:500}.badge-module{background:#1976d2;color:#fff;padding:.25rem .75rem;border-radius:12px;font-size:.85rem;font-weight:500}.inheritance-info{display:flex;gap:.5rem;padding:.75rem;background:#f9f9f9;border-radius:4px;border-left:3px solid #7B1FA2}.superclass-label{color:#666;font-weight:500;font-size:.9rem}.superclass-name{color:#7b1fa2;font-weight:600;font-family:monospace;font-size:.9rem}.method-search{width:100%;padding:.75rem;border:2px solid #e0e0e0;border-radius:6px;font-size:.95rem;transition:border-color .2s;font-family:monospace}.method-search:focus{outline:none;border-color:#7b1fa2}.method-section{margin-top:1rem}.method-section h4{color:#7b1fa2;font-size:.95rem;margin-bottom:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.method-list{max-height:300px;overflow-y:auto;background:#fafafa;border-radius:6px;padding:.5rem;border:1px solid #e0e0e0}.method-item{padding:.5rem .75rem;margin-bottom:.25rem;background:#fff;border-radius:4px;border-left:3px solid #7B1FA2;transition:all .2s;cursor:default}.method-item:hover{background:#f3e5f5;transform:translate(2px)}.method-item code{font-family:Courier New,Courier,monospace;font-size:.9rem;color:#333;font-weight:500}.method-list::-webkit-scrollbar{width:8px}.method-list::-webkit-scrollbar-track{background:#f0f0f0;border-radius:4px}.method-list::-webkit-scrollbar-thumb{background:#7b1fa2;border-radius:4px}.method-list::-webkit-scrollbar-thumb:hover{background:#6a1b9a}.breadcrumb{display:flex;align-items:center;padding:.5rem 0;font-size:.95rem}.breadcrumb-item{background:none;border:none;color:#fffc;cursor:pointer;padding:.25rem .5rem;margin:0;font-size:inherit;font-family:inherit;transition:color .2s,background .2s;border-radius:4px}.breadcrumb-item:hover{color:#fff;background:#ffffff1a}.breadcrumb-item.active{color:#fff;font-weight:600;cursor:default}.breadcrumb-item.active:hover{background:transparent}.breadcrumb-separator{color:#ffffff80;margin:0 .25rem}.breadcrumb-prominent{background:#ffffff1a;padding:.75rem;border-radius:4px}.back-button{background:#fff3;border:2px solid rgba(255,255,255,.4);color:#fff;padding:.4rem .8rem;margin-right:1rem;border-radius:6px;font-weight:600;cursor:pointer;transition:all .2s;font-size:.95rem}.back-button:hover{background:#ffffff4d;border-color:#fff9;transform:translate(-2px)}.sidebar{position:fixed;left:0;top:0;bottom:0;width:280px;background:linear-gradient(135deg,#1a1a2e,#16213e);border-right:1px solid rgba(255,255,255,.1);transition:width .3s ease;z-index:200;display:flex;flex-direction:column;box-shadow:2px 0 10px #0000004d}.sidebar.collapsed{width:60px}.sidebar-toggle{position:absolute;right:-20px;top:20px;width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg,#2a2a3e,#26315e);border:1px solid rgba(255,255,255,.2);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .3s ease;z-index:201;box-shadow:0 2px 8px #0000004d}.sidebar-toggle:hover{background:linear-gradient(135deg,#3a3a4e,#36416e);transform:scale(1.05)}.toggle-icon{font-size:18px;display:block}.sidebar-nav{margin-top:80px;padding:0 10px;flex:1;overflow-y:auto}.sidebar.collapsed .sidebar-nav{padding:0 5px}.nav-section{margin-bottom:20px}.nav-title{color:#ffffff80;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:1px;margin:0 0 15px 10px;transition:opacity .3s ease}.sidebar.collapsed .nav-title{opacity:0;height:0;margin:0}.nav-list{list-style:none;padding:0;margin:0}.nav-item{width:100%;padding:12px 15px;background:transparent;border:none;color:#fffc;cursor:pointer;display:flex;align-items:center;gap:12px;border-radius:8px;transition:all .2s ease;margin-bottom:4px;text-align:left;position:relative}.sidebar.collapsed .nav-item{padding:12px;justify-content:center}.nav-item:hover{background:#ffffff0d;color:#fff;transform:translate(2px)}.nav-item.active{background:linear-gradient(90deg,#e8439333,#e843931a);color:#fff;border-left:3px solid #e84393}.sidebar.collapsed .nav-item.active{border-left:none;border-radius:8px;box-shadow:0 0 10px #e843934d}.nav-icon{font-size:20px;display:flex;align-items:center;justify-content:center;min-width:24px}.nav-text{display:flex;flex-direction:column;flex:1;min-width:0}.sidebar.collapsed .nav-text{display:none}.nav-label{font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nav-description{font-size:11px;color:#ffffff80;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-nav::-webkit-scrollbar{width:6px}.sidebar-nav::-webkit-scrollbar-track{background:#ffffff0d}.sidebar-nav::-webkit-scrollbar-thumb{background:#fff3;border-radius:3px}.sidebar-nav::-webkit-scrollbar-thumb:hover{background:#ffffff4d}.sidebar.collapsed .nav-item:hover:after{content:attr(title);position:absolute;left:100%;top:50%;transform:translateY(-50%);margin-left:10px;padding:8px 12px;background:#000000e6;color:#fff;font-size:12px;border-radius:4px;white-space:nowrap;pointer-events:none;z-index:1000;box-shadow:0 2px 8px #0000004d}@media (max-width: 768px){.sidebar{width:240px}.sidebar.collapsed{width:0;border-right:none}.sidebar.collapsed .sidebar-toggle{right:-60px}}.collapsible-tree-container{width:100%;height:100vh;background:#fff;overflow:auto;position:relative;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Arial,sans-serif}.tree-header{position:sticky;top:0;left:0;right:0;background:#fff;border-bottom:1px solid #e0e0e0;padding:1rem;z-index:100;display:flex;justify-content:space-between;align-items:center}.tree-title{margin:0;font-size:1.5rem;font-weight:600;color:#333}.tree-controls{display:flex;gap:1rem;align-items:center}.tree-stats{font-size:.875rem;color:#666;font-family:monospace}.toggle-empty-button{padding:.5rem 1rem;background:#f5f5f5;border:1px solid #d0d0d0;border-radius:4px;font-size:.875rem;cursor:pointer;transition:all .2s;font-family:inherit;color:#333}.toggle-empty-button:hover{background:#e8e8e8;border-color:#999}.toggle-empty-button.active{background:#4caf50;color:#fff;border-color:#4caf50}.tree-svg-wrapper{padding:2rem;overflow:visible}.tree-svg{font:12px sans-serif;-webkit-user-select:none;user-select:none}.node{cursor:pointer}.node circle{stroke-width:2px;transition:all .2s}.node.node-gem circle{fill:#c00;stroke:#c00;r:5}.node.node-module circle{fill:#2196f3;stroke:#2196f3;r:4}.node.node-class circle{fill:#9c27b0;stroke:#9c27b0;r:4}.node.node-method circle,.node.node-class_method circle{fill:#999;stroke:#999;r:3}.node.node-leaf circle{fill:#fff}.node:hover circle{stroke-width:3px}.node text{font:12px monospace;fill:#333}.node.node-gem text{font-weight:700;font-size:14px;fill:#c00}.node.node-module text{font-weight:500;fill:#2196f3}.node.node-class text{font-style:italic;fill:#9c27b0}.node.node-method text,.node.node-class_method text{font-size:11px;fill:#666}.link{fill:none;stroke:#ccc;stroke-width:1.5px;stroke-opacity:.6}.tree-loading{display:flex;justify-content:center;align-items:center;height:100vh;font-size:1.25rem;color:#666}.tree-info{position:absolute;top:5rem;right:1rem;background:#000c;color:#fff;padding:.75rem;border-radius:4px;font-size:.75rem;max-width:250px;line-height:1.5;pointer-events:none}.tree-info kbd{display:inline-block;padding:2px 6px;background:#fff3;border:1px solid rgba(255,255,255,.4);border-radius:3px;font-family:monospace;font-size:.7rem}@media (max-width: 768px){.tree-header{flex-direction:column;align-items:flex-start;gap:.5rem}.tree-svg-wrapper{padding:1rem}.tree-info{display:none}}.app{display:flex;flex-direction:column;height:100vh;background:linear-gradient(135deg,#f5f5f5,#e8e8e8);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,sans-serif;padding-left:280px;transition:padding-left .3s ease}.app.sidebar-collapsed{padding-left:60px}.app.presentation-mode{padding-left:0}.app-header{background:#c00;color:#fff;padding:1rem 2rem;box-shadow:0 2px 8px #0000001a;z-index:90}.header-content{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.header-controls{display:flex;gap:1rem;align-items:center}.toggle-button{padding:.5rem 1rem;border:2px solid rgba(255,255,255,.3);border-radius:20px;background:#ffffff1a;color:#fff;font-size:.9rem;cursor:pointer;transition:all .3s;white-space:nowrap}.toggle-button:hover{background:#fff3;border-color:#ffffff80}.toggle-button.active{background:#ffffff40;border-color:#fff9}.controls-bar{background:#f8f8f8;border-bottom:1px solid #ddd;padding:.75rem 2rem;display:flex;gap:2rem;align-items:center;box-shadow:0 1px 3px #0000000d}.control-group{display:flex;align-items:center;gap:.5rem}.control-label{font-size:.9rem;color:#666;font-weight:500}.layout-buttons,.style-buttons{display:flex;gap:.25rem;background:#fff;border-radius:6px;padding:2px;border:1px solid #ddd}.layout-btn,.style-btn{padding:.4rem .8rem;border:none;background:transparent;color:#666;font-size:.85rem;cursor:pointer;transition:all .2s;border-radius:4px;font-weight:500}.layout-btn:hover,.style-btn:hover{background:#f0f0f0;color:#333}.layout-btn.active,.style-btn.active{background:#c00;color:#fff}.controls-bar .toggle-button{padding:.4rem .8rem;border:1px solid #ddd;border-radius:6px;background:#fff;color:#666;font-size:.85rem;font-weight:500}.controls-bar .toggle-button:hover{background:#f0f0f0;border-color:#ccc;color:#333}.controls-bar .toggle-button.active{background:#c00;color:#fff;border-color:#c00}.app-header h1{margin:0;font-size:1.8rem;font-weight:600;text-shadow:1px 1px 2px rgba(0,0,0,.1)}.app-main{flex:1;display:flex;overflow:hidden;position:relative}.app-footer{background:#333;color:#fff;padding:.5rem 2rem;display:flex;justify-content:center;align-items:center}.keyboard-hints{display:flex;gap:2rem;font-size:.9rem}.keyboard-hints span{opacity:.8;transition:opacity .2s}.keyboard-hints span:hover{opacity:1}.presentation-mode .app-header,.presentation-mode .app-footer{display:none}.presentation-mode .app-main{height:100vh}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.app-header,.app-footer{animation:fadeIn .5s ease-out}
