:root{--canvas:#fff;--surface:#fff;--surface-subtle:#f8fafc;--surface-code:#fff;--text-primary:#172033;--text-secondary:#526078;--text-tertiary:#667085;--border:#d9e1ed;--control-border:#7f8da3;--border-strong:#b8c4d6;--accent:#145ba6;--accent-hover:#0f4b8d;--accent-subtle:#edf5ff;--success:#18794e;--error:#b42318;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--space-16:64px;--spinner-size-inline:14px;--spinner-size-panel:24px}*{box-sizing:border-box}html{background:var(--canvas);color:var(--text-primary)}body{background:var(--canvas);text-rendering:optimizelegibility;min-height:100dvh;margin:0;font-family:Arial,Helvetica Neue,sans-serif;font-size:16px;line-height:1.55;overflow:hidden}button,input,select{color:inherit;font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}:focus-visible{outline:3px solid var(--accent);outline-offset:3px}.skip-link{z-index:10;top:var(--space-2);left:var(--space-2);background:var(--surface-code);padding:var(--space-2) var(--space-3);color:var(--surface);border-radius:4px;text-decoration:none;position:fixed;transform:translateY(-160%)}.skip-link:focus{transform:translateY(0)}.utility-shell{gap:var(--space-3);min-height:100dvh;max-height:100dvh;padding:var(--space-5);grid-template-rows:auto minmax(0,1fr);display:grid}.eyebrow{margin:0 0 var(--space-1);color:var(--accent);letter-spacing:.08em;text-transform:uppercase;font-size:.75rem;font-weight:700}.command-bar{gap:var(--space-3);background:var(--surface);min-width:0;padding:var(--space-1) var(--space-1) 0;display:grid}.command-bar__masthead{justify-content:space-between;align-items:center;min-width:0;display:flex}.command-brand{gap:var(--space-4);align-items:center;min-width:0;display:flex}.command-brand__mark{width:72px;height:72px;color:var(--accent);flex:none;place-items:center;display:grid}.nautical-chart-icon{width:64px;height:64px}.command-brand p{text-overflow:ellipsis;white-space:nowrap;margin:0;overflow:hidden}.command-brand__name{letter-spacing:-.03em;font-size:2rem;font-weight:700;line-height:1.1}.command-brand__meta{display:none}.knot-divider{width:72px;height:18px;color:var(--accent);flex:none}.command-bar__controls{gap:var(--space-4);grid-template-columns:minmax(0,1fr) minmax(220px,.36fr);grid-template-areas:"repository status";align-items:end;min-width:0;display:grid}.repository-form{gap:var(--space-4);grid-area:repository;grid-template-columns:auto minmax(0,1fr);align-items:center;min-width:0;display:grid}.repository-form>label{color:var(--text-primary);font-size:1rem;font-weight:700}.repository-action{gap:var(--space-2);grid-template-columns:minmax(0,1fr) auto;min-width:0;display:grid}.form-message{gap:var(--space-2);min-height:18px;color:var(--text-secondary);grid-area:status;justify-content:flex-end;align-items:center;margin:0;font-size:.875rem;line-height:1.4;display:flex}.form-message--error{color:var(--error)}.form-message__indicator{background:var(--success);border-radius:50%;flex:none;width:10px;height:10px}.form-message--error .form-message__indicator{background:var(--error)}.utility-workspace{gap:var(--space-3);background:0 0;grid-template-rows:auto minmax(0,1fr);min-width:0;min-height:0;display:grid;overflow:visible}.utility-workspace__content{gap:var(--space-3);grid-template-columns:minmax(288px,32vw) minmax(0,1fr);min-width:0;min-height:0;display:grid}.repository-form>label{color:var(--text-secondary);margin:0;font-size:.75rem;font-weight:650;display:block}input,select{border:1px solid var(--control-border);background:var(--surface);width:100%;min-height:44px;padding:0 var(--space-3);border-radius:6px}input:hover,select:hover{border-color:var(--border-strong)}input[aria-invalid=true]{border-color:var(--error)}input::placeholder{color:var(--text-tertiary)}.primary-button,.file-explorer__toggle,.file-tree__file,.text-button{border:0;transition:color .16s ease-out,background-color .16s ease-out,border-color .16s ease-out}.primary-button{gap:var(--space-2);background:var(--accent);min-height:44px;padding:0 var(--space-4);color:var(--surface);border-radius:6px;justify-content:center;align-items:center;font-weight:700;display:inline-flex}.primary-button:hover:not(:disabled){background:var(--accent-hover)}.primary-button:active:not(:disabled){transform:scale(.98)}.primary-button:disabled{background:var(--border-strong)}.repository-index{gap:var(--space-4);border:1px solid var(--border);background:var(--surface);min-width:0;padding:var(--space-4) var(--space-5);border-radius:8px;grid-template-columns:minmax(160px,200px) minmax(0,1fr);align-items:end;display:grid}.repository-index__header,.file-explorer__header{justify-content:space-between;align-items:end;min-width:0;display:flex}.repository-index__header h2,.file-explorer__header h2,.inspector-header h2{letter-spacing:-.02em;margin:0;font-size:1rem;font-weight:650;line-height:1.3}.repository-index__header>span,.file-explorer__header>span{min-width:28px;color:var(--text-secondary);text-align:right;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:.75rem}.repository-index__controls{gap:var(--space-3);grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:end;min-width:0;display:grid}.repository-index__knot{width:44px;height:16px;color:var(--accent);margin-bottom:14px}.repository-index__empty{color:var(--text-secondary);margin:0;font-size:.875rem}.chart-picker{gap:var(--space-1);min-width:0;display:grid;position:relative}.chart-picker>span{color:var(--text-secondary);font-size:.75rem;font-weight:650;display:block}.chart-picker__trigger{border:1px solid var(--control-border);background:var(--surface);width:100%;min-height:44px;padding:0 var(--space-3);text-align:left;border-radius:6px;justify-content:space-between;align-items:center;font-size:.875rem;display:flex}.chart-picker__trigger:hover{border-color:var(--border-strong)}.chart-picker__value{gap:var(--space-2);text-overflow:ellipsis;white-space:nowrap;align-items:center;min-width:0;display:flex;overflow:hidden}.chart-picker__icon,.chart-picker__chevron{flex:none;width:20px;height:20px}.chart-picker__icon{color:var(--accent)}.chart-picker__chevron{margin-left:var(--space-2);color:var(--text-secondary)}.chart-picker__command{z-index:3;top:calc(100% + var(--space-1));border:1px solid var(--border-strong);background:var(--surface);border-radius:6px;position:absolute;left:0;right:0;overflow:hidden}.chart-picker__input{border:0;border-bottom:1px solid var(--border);border-radius:0}.chart-picker__list{max-height:240px;padding:var(--space-1);overflow-y:auto}.chart-picker__item,.chart-picker__empty{width:100%;padding:var(--space-2) var(--space-3);text-align:left;border:0;border-radius:4px;font-size:.875rem;display:block}.chart-picker__item{cursor:pointer;background:0 0;align-items:center;min-height:44px;display:flex}.chart-picker__item[data-selected=true]{background:var(--accent-subtle)}.chart-picker__item[data-current=true]{color:var(--accent);font-weight:650}.chart-picker__empty{color:var(--text-secondary)}.file-explorer{border:1px solid var(--border);background:var(--surface);border-radius:8px;min-width:0;min-height:0;overflow:hidden}.file-explorer__toggle{display:none}.file-explorer__panel{gap:var(--space-2);height:100%;min-height:0;padding:var(--space-4);grid-template-rows:auto minmax(0,1fr);display:grid}.file-explorer__empty{padding:var(--space-6);color:var(--text-secondary);text-align:center;place-items:center;margin:0;font-size:.875rem;display:grid}.file-tree{overscroll-behavior:contain;border-top:1px solid var(--border);min-height:0;padding:var(--space-1) 0;margin:0;overflow-y:auto}.file-tree__file,.file-tree__directory summary{width:100%;min-height:44px;padding:var(--space-2) var(--space-3);text-align:left;background:0 0;border-bottom:0;justify-content:space-between;align-items:center;display:flex}.file-tree__file{gap:var(--space-2);justify-content:flex-start}.file-tree__icon{width:24px;height:24px;color:var(--accent);flex:none}.file-tree__file:hover,.file-tree__directory summary:hover{background:var(--surface)}.file-tree__file[aria-current=page]{background:var(--accent-subtle);color:var(--accent);font-weight:700}.file-tree__directory{border-bottom:0}.file-tree__directory summary{cursor:pointer;list-style:none}.file-tree__directory summary::-webkit-details-marker{display:none}.file-tree__directory summary>span:last-child{margin-left:var(--space-2);background:var(--surface);color:var(--text-secondary);border-radius:999px;padding:2px 6px;font-size:.75rem}.file-tree__directory-name{gap:var(--space-2);align-items:center;min-width:0;display:flex}.file-tree__file--nested{min-height:36px;padding-left:var(--space-6);color:var(--text-secondary);overflow-wrap:anywhere;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:.8125rem}.chart-inspector{border:1px solid var(--border);background:var(--surface);border-radius:8px;grid-template-rows:auto minmax(0,1fr);min-width:0;min-height:0;display:grid;overflow:hidden}.inspector-header{gap:var(--space-4);border-bottom:1px solid var(--border);min-width:0;padding:var(--space-4) var(--space-5);justify-content:space-between;align-items:center;display:flex}.chart-inspector--loaded{grid-template-rows:minmax(0,1fr)}.chart-inspector--loaded .inspector-header{display:none}.inspector-title:focus{outline:3px solid var(--accent);outline-offset:4px}.version-badge{background:var(--accent-subtle);max-width:45%;padding:var(--space-1) var(--space-3);color:var(--accent);text-overflow:ellipsis;white-space:nowrap;border-radius:999px;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:.75rem;overflow:hidden}.inspector-status{gap:var(--space-3);min-height:0;padding:var(--space-6);color:var(--text-secondary);text-align:center;flex-direction:column;grid-row:2/-1;justify-content:center;align-items:center;display:flex}.inspector-status strong{color:var(--text-primary);font-size:1rem}.inspector-status--error{color:var(--error)}.spinner{width:var(--spinner-size-panel);height:var(--spinner-size-panel);border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:.7s linear infinite spin}.spinner--button{width:var(--spinner-size-inline);height:var(--spinner-size-inline);border-color:color-mix(in srgb, var(--surface) 38%, transparent);border-top-color:var(--surface);flex:none}@keyframes spin{to{transform:rotate(360deg)}}.file-panel{overscroll-behavior:contain;min-width:0;min-height:0;padding:var(--space-5);overflow-y:auto}.empty-file{padding:var(--space-12) var(--space-6);border:1px dashed var(--border);color:var(--text-secondary);text-align:center;border-radius:8px;margin:0}.markdown{max-width:760px;margin:0 0 var(--space-10);color:var(--text-primary);line-break:auto;overflow-wrap:anywhere;word-break:normal;overflow-x:auto}.markdown>:first-child{margin-top:0}.markdown h1,.markdown h2,.markdown h3{letter-spacing:-.025em;margin:1.7em 0 .55em;line-height:1.25}.markdown h1{font-size:2rem}.markdown h2{padding-bottom:var(--space-2);border-bottom:1px solid var(--border);font-size:1.5rem}.markdown h3{font-size:1.125rem}.markdown p,.markdown li{line-height:1.7}.markdown a{color:var(--accent);text-underline-offset:3px}.markdown code{background:var(--surface-subtle);border-radius:4px;padding:2px 5px;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:.9em}.markdown pre{background:var(--surface-code);padding:var(--space-4);color:#e5edf8;border-radius:8px;overflow-x:auto}.markdown pre code{background:0 0;padding:0}.markdown blockquote{border-left:3px solid var(--border-strong);padding-left:var(--space-4);color:var(--text-secondary);margin-left:0}.markdown table{border-collapse:collapse;width:max-content;min-width:100%}.markdown th,.markdown td{border:1px solid var(--border);min-width:120px;max-width:360px;padding:var(--space-2) var(--space-3);text-align:left}.markdown img{max-width:100%;height:auto}.code-viewer{background:var(--surface);min-width:0;color:var(--text-primary);border:0;border-radius:0;overflow:hidden}.code-viewer__header{gap:var(--space-4);border-bottom:1px solid var(--border);background:var(--surface);min-height:48px;padding:0 var(--space-4);justify-content:space-between;align-items:center;display:flex}.code-viewer__filename{gap:var(--space-2);text-overflow:ellipsis;white-space:nowrap;align-items:center;min-width:0;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:.8125rem;display:flex;overflow:hidden}.code-viewer__file-icon,.copy-icon{width:22px;height:22px;color:var(--accent);flex:none}.code-viewer__actions{gap:var(--space-1);flex:none;display:flex}.text-button{min-height:44px;padding:0 var(--space-2);color:var(--accent);background:0 0;border-radius:4px;font-size:.75rem;font-weight:700}.text-button--icon{justify-content:center;align-items:center;width:44px;display:inline-flex}.text-button:hover{background:var(--accent-subtle);color:var(--accent-hover)}.code-viewer__scroll{min-height:0;overflow:auto visible}.code-viewer__code{min-width:100%;padding:var(--space-4) 0;margin:0;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:.8125rem;line-height:1.65;display:table}.code-line{min-height:21px;padding-right:var(--space-4);grid-template-columns:48px minmax(max-content,1fr);display:grid}.code-line:hover{background:var(--accent-subtle)}.code-line__number{margin-right:var(--space-4);border-right:1px solid var(--border);padding-right:var(--space-3);color:var(--text-secondary);text-align:right;-webkit-user-select:none;user-select:none}.hljs-comment,.hljs-quote{color:var(--text-secondary);font-style:italic}.hljs-attr,.hljs-keyword,.hljs-selector-tag{color:var(--accent)}.hljs-literal,.hljs-number{color:var(--error)}.hljs-string{color:var(--success)}.hljs-meta,.hljs-variable{color:var(--accent-hover)}.not-found{min-height:100dvh;padding:var(--space-4);place-items:center;display:grid}.not-found__surface{border:1px solid var(--border);background:var(--surface);border-radius:12px;width:min(100%,640px);padding:clamp(32px,7vw,64px)}.not-found h1{letter-spacing:-.04em;margin:0;font-size:clamp(2rem,6vw,3.5rem);line-height:1.05}.not-found p:not(.eyebrow){margin:var(--space-4) 0 var(--space-6);color:var(--text-secondary)}.primary-link{background:var(--accent);min-height:44px;padding:0 var(--space-4);color:var(--surface);border-radius:6px;align-items:center;font-weight:700;text-decoration:none;display:inline-flex}.primary-link:hover{background:var(--accent-hover)}@media (max-width:767px){.utility-shell{gap:var(--space-2);padding:var(--space-4)}.command-bar{gap:var(--space-2);padding:0}.command-brand__mark{width:48px;height:48px}.nautical-chart-icon{width:44px;height:44px}.command-brand{gap:var(--space-2)}.command-brand__name{font-size:1.375rem}.knot-divider{width:56px;height:16px}.command-bar__controls{grid-template-columns:minmax(0,1fr);grid-template-areas:"repository""status"}.repository-form{gap:var(--space-1);grid-template-columns:minmax(0,1fr)}.repository-form>label{font-size:.875rem}.utility-workspace{grid-template-rows:auto minmax(0,1fr)}.repository-index,.repository-index__controls{grid-template-columns:minmax(0,1fr)}.repository-index__knot{display:none}.chart-picker__list{max-height:200px}.utility-workspace__content{grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(0,1fr)}.file-explorer{border-bottom:1px solid var(--border);background:var(--surface)}.file-explorer__toggle{background:var(--surface);width:100%;min-height:60px;padding:var(--space-2) var(--space-4);text-align:left;justify-content:space-between;align-items:center;display:flex}.file-explorer__toggle>span:first-child{min-width:0;display:grid}.file-explorer__toggle strong,.file-explorer__toggle small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.file-explorer__toggle small{color:var(--text-secondary);font-weight:400}.file-explorer__toggle>span:last-child{margin-left:var(--space-4);color:var(--accent);flex:none;font-size:.875rem;font-weight:700}.file-explorer__toggle:disabled>span:last-child{color:var(--text-tertiary)}.file-explorer__panel{border-top:1px solid var(--border);height:min(36dvh,320px);padding:var(--space-3) var(--space-4);display:none}.file-explorer__panel--open{display:grid}.inspector-header{padding:var(--space-3) var(--space-4)}.file-panel{padding:var(--space-4)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
