:root{--bg: #11151c;--panel: #1a2029;--panel-soft: #222a36;--border: #2e3744;--text: #e8edf4;--text-dim: #93a1b3;--accent: #3a9bff;--bone: #e9e2d0;--muscle: #e0584e;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);overflow:hidden}.app{display:flex;height:100%}.app.side-right{flex-direction:row-reverse}.app.side-right .sidebar{border-right:none;border-left:1px solid var(--border)}.viewer{flex:1;min-width:0;position:relative}.viewer canvas{display:block}.viewer-loader{color:var(--text-dim);font-size:14px;white-space:nowrap}.sidebar{width:320px;flex-shrink:0;height:100%;display:flex;flex-direction:column;gap:14px;padding:20px 18px;background:var(--panel);border-right:1px solid var(--border);overflow-y:auto;z-index:10}.sidebar>*{flex-shrink:0}.sidebar-header{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.sidebar-header h1{font-size:22px;letter-spacing:.5px}.side-toggle{flex-shrink:0;background:var(--panel-soft);border:1px solid var(--border);color:var(--text-dim);font-size:11px;font-weight:600;padding:5px 9px;border-radius:6px;cursor:pointer;white-space:nowrap;transition:color .15s,border-color .15s}.side-toggle:hover{color:var(--accent);border-color:var(--accent)}.tagline{font-size:12px;color:var(--text-dim);margin-top:2px}.panel{background:var(--panel-soft);border:1px solid var(--border);border-radius:10px;padding:14px}.panel h2{font-size:11px;text-transform:uppercase;letter-spacing:1.2px;color:var(--text-dim);margin-bottom:10px}.segmented{display:flex;border:1px solid var(--border);border-radius:8px;overflow:hidden}.segmented button{flex:1;padding:8px 0;background:transparent;border:none;color:var(--text-dim);font-size:13px;cursor:pointer;transition:background .15s,color .15s}.segmented button.active{background:var(--accent);color:#fff;font-weight:600}.segmented.views{display:grid;grid-template-columns:1fr 1fr;gap:6px;border:none;background:transparent;overflow:visible}.segmented.views button{min-width:0;background:var(--bg);border:1px solid var(--border);border-radius:7px;padding:8px 4px;white-space:nowrap}.segmented.views button:hover:not(.active){border-color:var(--text-dim);color:var(--text)}.toggle{display:flex;align-items:center;gap:9px;padding:5px 0;font-size:13.5px;cursor:pointer;-webkit-user-select:none;user-select:none}.toggle input{accent-color:var(--accent);width:15px;height:15px}.toggle em{color:var(--text-dim);font-style:normal;font-size:12px}.btn-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px}.mini-btn{padding:7px 0;background:var(--bg);border:1px solid var(--border);border-radius:6px;color:var(--text-dim);font-size:12.5px;cursor:pointer;transition:border-color .12s,color .12s}.mini-btn:hover:not(:disabled){border-color:var(--text-dim);color:var(--text)}.mini-btn:disabled{opacity:.4;cursor:default}.clip-controls{margin-top:8px;display:flex;flex-direction:column;gap:8px}.clip-controls .segmented button{font-size:12px}.slider-with-default{position:relative;padding-top:4px}.slider-default-tick{position:absolute;top:0;width:2px;height:8px;margin-left:-1px;background:var(--accent);border-radius:1px;pointer-events:none}.clip-foot{display:flex;align-items:center;justify-content:space-between;gap:8px}.link-btn{flex-shrink:0;background:none;border:none;color:var(--accent);font-size:12px;cursor:pointer;padding:0;white-space:nowrap}.link-btn:hover:not(:disabled){text-decoration:underline}.link-btn:disabled{color:var(--text-dim);opacity:.5;cursor:default}.attach-legend{display:flex;gap:16px;margin-top:6px;font-size:12.5px;color:var(--text-dim)}.attach-legend span{display:inline-flex;align-items:center;gap:6px}.attach-legend .swatch{width:11px;height:11px;border-radius:3px}.attach-legend .swatch.origin{background:#36e07a}.attach-legend .swatch.insert{background:#b388ff}.hint{font-size:12px;color:var(--text-dim);line-height:1.5;margin-top:9px}.full-slider{width:100%;accent-color:var(--accent)}.slider-label{display:block;font-size:11.5px;color:var(--text-dim);margin:8px 0 2px}.slider-label:first-of-type{margin-top:0}.anno{transform:translate(-50%,-100%);display:flex;flex-direction:column;align-items:center;pointer-events:none;-webkit-user-select:none;user-select:none}.anno-label{background:#11151ceb;border:1px solid var(--accent);color:var(--accent);font-size:12px;font-weight:600;white-space:nowrap;padding:3px 9px;border-radius:6px;box-shadow:0 2px 8px #0006}.anno-line{width:1px;height:28px;background:var(--accent)}.anno-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);margin-top:-4px;box-shadow:0 0 6px var(--accent)}.list-panel{display:flex;flex-direction:column;min-height:140px}.list-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}.list-head h2{margin-bottom:0}.sort-select{background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:6px;font-size:11.5px;padding:4px 6px;cursor:pointer}.sort-select:focus{outline:1px solid var(--accent)}.structure-list{list-style:none;max-height:52vh;overflow-y:auto;display:flex;flex-direction:column;gap:3px;padding-right:2px}.structure-list button{width:100%;text-align:left;background:transparent;border:1px solid transparent;border-radius:6px;color:var(--text);font-size:13px;padding:6px 9px;cursor:pointer;transition:background .12s,border-color .12s;display:flex;align-items:center;justify-content:space-between;gap:8px}.structure-list button:hover{background:#ffffff0d}.structure-list button.active{background:#3a9bff29;border-color:var(--accent);color:var(--accent);font-weight:600}.search-row{position:relative;display:flex;align-items:center}.search-input{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:13px;padding:9px 30px 9px 11px;font-family:inherit}.search-input:focus{outline:1px solid var(--accent);border-color:var(--accent)}.search-input::-webkit-search-cancel-button{display:none}.search-clear{position:absolute;right:8px;background:transparent;border:none;color:var(--text-dim);font-size:12px;cursor:pointer;padding:2px 4px}.search-clear:hover{color:var(--text)}.tree,.tree-groups,.tree-leaves{list-style:none}.tree{max-height:58vh;min-height:220px;overflow-y:auto;padding-right:2px}.tree-groups{margin-left:6px;border-left:1px solid var(--border);padding-left:6px}.tree-leaves{margin-left:14px}.tree-region,.tree-group,.tree-leaf{width:100%;text-align:left;background:transparent;border:1px solid transparent;border-radius:6px;color:var(--text);cursor:pointer;padding:6px 8px;display:flex;align-items:center;gap:7px;transition:background .12s,border-color .12s}.tree-region{font-size:13px;font-weight:600}.tree-group{font-size:12.5px;color:var(--text)}.tree-leaf{font-size:12.5px;color:var(--text-dim)}.tree-region:hover,.tree-group:hover,.tree-leaf:hover{background:#ffffff0d}.tree-leaf.active,.tree-group:has(.active){background:#3a9bff29;border-color:var(--accent);color:var(--accent);font-weight:600}.caret{font-size:9px;color:var(--text-dim);width:9px;flex-shrink:0}.tree-count{margin-left:auto;font-size:10.5px;color:var(--text-dim);background:#ffffff0f;padding:1px 6px;border-radius:999px}.exercises{margin-top:14px}.exercises h3{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--text-dim);margin-bottom:8px}.exercises ul{list-style:none;display:flex;flex-direction:column;gap:7px}.exercises li{background:var(--bg);border:1px solid var(--border);border-left:2px solid var(--muscle);border-radius:6px;padding:7px 9px}.massage{margin-top:14px}.massage h3{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--text-dim);margin-bottom:8px}.massage-meta{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.massage-tag{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;padding:2px 8px;border-radius:999px}.massage-tag.region{background:#3a9bff29;color:#8cc6ff}.massage-tag.pressure{background:#ffffff12;color:var(--text)}.massage-tag.pressure.light{background:#78c88c2e;color:#8fd6a4}.massage-tag.pressure.moderate{background:#5ab4f029;color:#7fc1f0}.massage-tag.pressure.firm{background:#9682f52e;color:#b3a6ff}.massage-tag.pressure.deep{background:#ff645a2e;color:#ff8a7a}.massage-techniques{list-style:none;counter-reset:tech;display:flex;flex-direction:column;gap:8px;margin:0 0 12px;padding:0}.massage-techniques li{counter-increment:tech;position:relative;background:var(--bg);border:1px solid var(--border);border-left:2px solid var(--muscle);border-radius:6px;padding:8px 10px 8px 30px}.massage-techniques li:before{content:counter(tech);position:absolute;left:8px;top:8px;width:16px;height:16px;border-radius:50%;background:var(--accent);color:#06121f;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center}.tech-name{display:block;font-size:13px;font-weight:600;color:var(--text)}.tech-how{display:block;font-size:11.5px;color:var(--text-dim);margin-top:2px;line-height:1.45}.massage-note,.massage-caution{font-size:11.5px;line-height:1.45;border-radius:6px;padding:7px 9px;margin-top:8px}.massage-note{background:#3a9bff14;color:var(--text-dim)}.massage-note strong{color:#8cc6ff}.massage-caution{background:#ff645a1a;color:var(--text-dim)}.massage-caution strong{color:#ff8a7a}.ex-name{display:block;font-size:13px;font-weight:600}.ex-note{display:block;font-size:11.5px;color:var(--text-dim);margin-top:2px;line-height:1.4}.selection-panel{display:flex;flex-direction:column}.selection-title{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px}.structure-name{font-size:17px;font-weight:600}.badge{font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.8px;padding:3px 8px;border-radius:999px}.badge.skeleton{background:#b4c8e229;color:#c0cee0}.badge.muscular{background:#e0584e2e;color:#f08a82}.badge.organ{background:#9682f52e;color:#b3a6ff}.description{font-size:13.5px;line-height:1.55;color:var(--text)}.description p{margin-bottom:10px}.placeholder{color:var(--text-dim);font-size:13px;line-height:1.55}.placeholder code{font-size:11.5px;background:#ffffff12;padding:1px 5px;border-radius:4px}.sidebar-footer{font-size:11.5px;color:var(--text-dim);text-align:center;display:flex;flex-direction:column;gap:6px;margin-top:auto;padding-top:4px}.sidebar-footer .credit{font-size:10.5px;opacity:.85}.sidebar-footer a{color:var(--accent);text-decoration:none}.sidebar-footer a:hover{text-decoration:underline}@media (max-width: 720px){.app,.app.side-right{flex-direction:column-reverse}.sidebar{width:100%;height:42%;border-right:none;border-top:1px solid var(--border)}}
