@font-face{font-family:Iosevka;src:url('/assets/fonts/iosevka-latin-400.woff2') format('woff2');font-style:normal;font-weight:400;font-display:swap}
:root{--base:#232136;--surface:#2a273f;--overlay:#393552;--muted:#6e6a86;--subtle:#908caa;--text:#e0def4;--love:#eb6f92;--gold:#f6c177;--rose:#ea9a97;--pine:#3e8fb0;--foam:#9ccfd8;--iris:#c4a7e7;--highlight-low:#2a283e;--highlight-med:#44415a;--highlight-high:#56526e;--sidebar:252px;--status:25px;--line:24px}
*{box-sizing:border-box}
html{background:var(--base);scroll-behavior:smooth;scroll-padding-top:28px}
body{margin:0;background:var(--base);color:var(--text);font:400 16px/var(--line) Iosevka,'SFMono-Regular',Consolas,monospace;font-synthesis:none;overflow-wrap:break-word;min-width:280px}
button,a,summary{-webkit-tap-highlight-color:transparent}
button,input{font:inherit}
button{cursor:pointer}
a{color:inherit;text-decoration:none;text-underline-offset:4px}
button{color:inherit;border:0;background:transparent;padding:0}
::selection{background:var(--highlight-med);color:var(--text)}
:focus-visible{outline:1px solid var(--foam);outline-offset:3px}
button:disabled{cursor:default}
[hidden]{display:none!important}
.icon{width:16px;height:16px;flex:0 0 16px;vertical-align:-2px}
.iris{color:var(--iris)}.foam{color:var(--foam)}.rose{color:var(--rose)}.gold{color:var(--gold)}.subtle{color:var(--subtle)}
.skip-link{position:fixed;top:-80px;left:12px;z-index:100;padding:8px 12px;background:var(--iris);color:var(--base)}
.skip-link:focus{top:8px}
.explorer{position:fixed;inset:0 auto var(--status) 0;width:var(--sidebar);background:var(--surface);display:flex;flex-direction:column;z-index:40;font-size:15px;line-height:24px;overflow:auto;border-right:1px solid rgba(144,140,170,.06)}
.explorer-top{min-height:38px;display:flex;align-items:center;justify-content:space-between;padding:0 12px 0 10px}
.root-link{display:flex;gap:7px;align-items:center;color:var(--text);white-space:nowrap}
.root-link .icon{color:var(--iris)}
.root-link:hover{color:var(--iris)}
.language-switch{display:flex;align-items:center;gap:3px;white-space:nowrap;font-size:12px;color:var(--subtle)}
.language-switch a{display:inline-flex;align-items:center;justify-content:center;min-width:26px;min-height:28px}
.language-switch a:hover{color:var(--text)}
.language-switch a[aria-current="page"]{color:var(--iris);text-decoration:underline;text-underline-offset:3px}
.language-switch-mobile{display:none}
.file-tree{flex:1;padding-top:6px}
.file-tree details{margin:0}
.file-tree summary{display:flex;position:relative;align-items:center;gap:5px;min-height:26px;padding:1px 13px 1px 10px;color:var(--subtle);list-style:none;cursor:pointer;user-select:none}
.file-tree summary::-webkit-details-marker{display:none}
.file-tree summary:after{content:'›';margin-left:auto;color:var(--muted);transform:rotate(0deg)}
.file-tree details[open]>summary:after{transform:rotate(90deg)}
.tree-count{margin-left:5px;font-size:12px;color:var(--muted)}
.tree-children{margin-left:17px;border-left:1px solid var(--highlight-med)}
.tree-link{display:flex;align-items:center;gap:5px;padding:1px 10px;min-height:26px;white-space:nowrap;color:var(--subtle)}
.tree-children .tree-link{padding-left:11px;position:relative}
.tree-children .tree-link:before{position:absolute;left:0;content:'';width:7px;border-top:1px solid var(--highlight-med)}
.tree-link .icon{color:var(--subtle)}
.tree-link.iris .icon{color:var(--iris)}.tree-link.foam .icon{color:var(--foam)}.tree-link.gold .icon{color:var(--gold)}.tree-link.rose .icon{color:var(--rose)}
.tree-link:hover,.file-tree summary:hover{background:var(--overlay);color:var(--text)}
.tree-link.active{background:var(--iris);color:var(--base)}
.tree-link.active .icon{color:var(--base)}
.tree-link.active:before{border-color:var(--base)}
.tree-link:not(.active),.file-tree summary,.theme-label,.statusline{color:color-mix(in srgb,var(--subtle) 95%,var(--text))}
.tree-link:not(.active):hover,.file-tree summary:hover{color:var(--text)}
.explorer-bottom{padding:20px 0 8px}
.theme-label{display:flex;align-items:center;gap:6px;color:var(--subtle);margin-top:17px;padding:4px 12px;font-size:13px}
.theme-label .icon{width:13px;height:13px;flex-basis:13px;color:var(--iris)}
.theme-dot{margin-left:auto;width:6px;height:6px;border-radius:50%;background:var(--iris)}
.editor{margin-left:var(--sidebar);min-height:calc(100svh - var(--status));position:relative;padding-bottom:60px;overflow:hidden;background:var(--base)}
.editor-home{height:calc(100svh - var(--status));min-height:520px;padding:0}
.line-numbers{position:absolute;inset:0 auto 0 0;pointer-events:none;width:39px;padding-top:8px;display:flex;align-items:flex-end;flex-direction:column;overflow:hidden;font-size:14px;color:var(--highlight-high);user-select:none}
.line-numbers span{flex:0 0 var(--line);padding-right:9px;line-height:var(--line)}
#rain{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.welcome{position:relative;width:100%;height:100%;min-height:520px;display:flex;align-items:center;justify-content:center;padding-left:30px}
.ascii-portrait{position:absolute;width:min(77vh,650px,92%);aspect-ratio:1;left:calc(50% + 14px);top:48%;transform:translate(-50%,-50%);pointer-events:none}
.mascot-fallback{position:absolute;inset:30% 0 auto;text-align:center;white-space:pre;color:var(--highlight-high);font:inherit;font-size:36px;line-height:40px}
.ascii-portrait.ready .mascot-fallback{display:none}
.welcome-copy{position:absolute;left:calc(50% + 14px);top:48%;transform:translateX(-50%);width:max-content;max-width:calc(100% - 56px);text-align:center;display:flex;flex-direction:column;align-items:center;font-size:14px;line-height:19px}
.welcome-copy h1{margin:0;font:inherit;color:var(--text)}
.welcome-subtitle,.welcome-byline{font:inherit;color:#a8a3be;padding:0;margin:0}
.explore{display:inline-flex;align-items:center;justify-content:center;font:inherit;min-height:44px;padding:0 7px;margin-top:6px;color:var(--iris)}
.explore:hover{color:var(--text)}
/* Visible letters are cells in #rain. These transparent semantic elements keep
   their real hit areas and accessible names, without masking the portrait. */
.ascii-ready .welcome-copy{inset:0;width:100%;height:100%;max-width:none;transform:none;display:block;pointer-events:none}
.ascii-ready [data-ascii-text]{position:absolute;margin:0;padding:0;color:transparent;background:none;font:400 14px/19px Iosevka,monospace;pointer-events:none}
.ascii-ready a[data-ascii-text]{pointer-events:auto}
.ascii-ready [data-ascii-text]::selection{color:transparent;background:transparent}
.welcome-footnote{position:absolute;bottom:17px;left:40px;right:20px;text-align:center;font-size:12px;color:var(--subtle);margin:0}
.document{position:relative;margin:0 42px 0 50px;padding-top:42px;max-width:780px;z-index:2}
.reveal-pending .document{visibility:hidden}
.text-reveal{pointer-events:none}
.text-reveal-source{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:pre;border:0}
.text-reveal-ink{user-select:none}
@media(prefers-reduced-motion:reduce){.reveal-pending .document{visibility:visible}}
.document h1,.document h2{font-size:inherit;font-weight:400;line-height:var(--line);margin:0;color:var(--text)}
.document h1{font-size:19px;margin-bottom:32px;line-height:28px}
.document h2{margin-bottom:12px}
.syntax{color:var(--iris);padding-right:5px}
.document p{margin:0 0 18px;color:var(--subtle)}
.document .lead{color:var(--text);margin-bottom:16px;font-size:17px}
.document section{margin-top:36px}
.document .inline-link{color:var(--iris)}
.document .inline-link.foam{color:var(--foam)}.document .inline-link.gold{color:var(--gold)}.document .inline-link.rose{color:var(--rose)}
.inline-link{display:inline;box-decoration-break:clone;-webkit-box-decoration-break:clone;background:rgba(144,140,170,.06);padding:0 3px;text-decoration:none}
.inline-link .icon{margin-right:4px}.inline-link:hover{text-decoration:underline;background:var(--overlay)}
.text-list{list-style:none;padding:0;margin:0;color:var(--subtle)}
.text-list li{margin:9px 0}.text-list li:before{content:'- ';color:var(--muted)}
.next-line{margin-top:38px!important}
.document .comment,.comment{color:var(--subtle);font-size:14px}
.product-index{margin:30px 0 32px}
.product-row{display:flex;align-items:flex-start;gap:17px;padding:20px 10px 20px 0;border-top:1px solid var(--overlay);position:relative;transition:background .16s}
.product-row:last-child{border-bottom:1px solid var(--overlay)}
.product-number{font-size:13px;color:var(--subtle);padding-top:1px}
.product-body{flex:1;display:flex;flex-direction:column;gap:3px}
.product-name{display:flex;gap:7px;align-items:center;font-size:18px}
.product-summary{color:var(--text);font-size:16px}
.product-category{color:var(--subtle);font-size:13px}
.row-arrow{align-self:center;opacity:.55;font-size:22px;margin-left:10px;transition:transform .16s,opacity .16s}
.product-row:hover{background:rgba(57,53,82,.3)}.product-row:hover .row-arrow{transform:translate(3px,-3px);opacity:1}
.product-row:hover .product-name{text-decoration:underline;text-underline-offset:5px}
.contact-document{max-width:680px}
.contact-address{margin:42px 0 48px;display:flex;flex-direction:column;align-items:flex-start;gap:7px}
.contact-email{display:flex;gap:12px;align-items:center;font-size:23px;line-height:34px;color:var(--foam);max-width:100%}.contact-email:hover{text-decoration:underline}.contact-email>span[aria-hidden="true"]{font-size:18px;color:var(--subtle);margin-left:6px}
.copy-button{font-size:13px;color:var(--subtle);min-height:32px}.copy-button:hover{color:var(--iris)}
.document-end{font-size:14px;color:var(--highlight-high);margin-top:35px;margin-left:21px}.editor-home .document-end{display:none}
.statusline{position:fixed;z-index:50;inset:auto 0 0;display:flex;align-items:center;gap:0;height:var(--status);background:var(--surface);color:var(--subtle);font-size:12px;line-height:25px;white-space:nowrap;user-select:none}
.mode{color:var(--base);background:var(--iris);padding:0 10px;font-size:11px;letter-spacing:.6px}
.status-branch{padding:0 11px;background:var(--overlay);color:var(--text)}.status-branch span{color:var(--iris);margin-right:5px}
.status-file{padding:0 12px;overflow:hidden;text-overflow:ellipsis;min-width:0}.status-owner{margin-left:auto;padding:0 18px}.status-theme{padding:0 12px;background:var(--overlay)}.status-position{padding:0 12px;min-width:48px;color:var(--base);background:var(--iris)}
.toast{position:fixed;bottom:43px;right:18px;z-index:100;padding:8px 14px;border:1px solid var(--highlight-high);background:var(--surface);color:var(--foam);font-size:14px;max-width:calc(100vw - 36px)}
.mobile-header,.close-menu,.menu-backdrop{display:none}
@media(min-width:1500px){:root{--sidebar:270px}.document{max-width:840px;margin-left:58px;padding-top:46px}.ascii-portrait{width:min(76vh,760px,88%)}}
@media(max-width:1050px) and (min-width:701px){:root{--sidebar:215px}.explorer{font-size:14px}.document{margin-right:30px}.contact-email{font-size:20px}}
@media(max-width:700px){
  :root{--sidebar:250px;--status:25px;--line:24px}
  body{font-size:16px}
  .mobile-header{position:sticky;top:0;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:48px;background:var(--surface);border-bottom:1px solid var(--overlay);padding:0 12px;z-index:30;font-size:14px}
  .language-switch-desktop{display:none}.language-switch-mobile{display:flex;margin-left:auto}.language-switch-mobile a{min-width:36px;min-height:44px}
  .menu-toggle{display:flex;align-items:center;gap:5px;min-height:44px;color:var(--subtle)}.menu-toggle:hover{color:var(--text)}
  .mobile-brand{display:flex;align-items:center;gap:6px;color:var(--text)}.mobile-brand .icon{color:var(--iris)}
  .explorer{transform:translateX(-100%);transition:transform .2s ease;bottom:var(--status);width:var(--sidebar);font-size:16px}
  .explorer-top{min-height:48px}.close-menu{display:block;min-width:36px;min-height:40px;font-size:26px;color:var(--subtle)}
  body.menu-open .explorer{transform:translateX(0)}
  .file-tree summary,.tree-link{min-height:37px;padding-top:6px;padding-bottom:6px}
  .menu-backdrop{display:block;position:fixed;inset:0;z-index:35;background:rgba(18,16,31,.62)}
  .editor{margin-left:0;min-height:calc(100svh - 73px);padding-bottom:55px}
  .editor-home{height:calc(100svh - 73px);min-height:490px}
  .line-numbers{width:28px;font-size:12px}.line-numbers span{padding-right:7px}
  .welcome{min-height:490px;padding-left:16px}.ascii-portrait{width:calc(100% - 17px);max-width:560px;left:calc(50% + 6px);top:43%}
  .welcome-copy{left:calc(50% + 6px);top:43%}.welcome-footnote{left:28px;right:12px;bottom:23px;font-size:11px}
  .document{margin:0 20px 0 39px;padding-top:50px;max-width:none}.document h1{font-size:19px;margin-bottom:25px}.document .lead{font-size:17px;line-height:25px}
  .document section{margin-top:32px}.text-list li{margin:13px 0}.text-list .inline-link{white-space:nowrap}
  .product-row{gap:12px;padding:20px 0}.product-summary{font-size:15px;line-height:22px;margin-top:5px}.product-category{font-size:12px;line-height:20px}.row-arrow{font-size:20px}.product-name{font-size:18px}
  .contact-address{margin:34px 0}.contact-email{font-size:20px;gap:7px}.contact-email .icon{width:15px;height:15px;flex-basis:15px}.contact-email>span[aria-hidden="true"]{display:none}
  .status-owner,.status-theme{display:none}.status-position{margin-left:auto}.status-branch{padding:0 8px}.status-file{padding:0 8px}
  .document-end{margin-left:15px}
}
@media(max-width:360px){.welcome-footnote{font-size:10px}.document{margin-left:35px;margin-right:15px}.contact-email{font-size:18px}.mobile-header{gap:6px;padding:0 8px}.mobile-brand{font-size:12px}.status-branch{display:none}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}}
@media print{.explorer,.statusline,.mobile-header,.line-numbers,.menu-backdrop,.copy-button,.document-end{display:none!important}.editor{margin:0;background:white;color:#222}.document{margin:0;padding:0;max-width:none}.document p{color:#333}a{text-decoration:underline}}
