@import url('./fonts/fonts.css');
/* Iris / The living instrument. Original glyphs, geometric art and real Bevy rendering. */
:root { color-scheme:dark; --canvas:#101A24; --ink:#EAEDE5; --muted:#B9C4BF; --metal:#D8BA8D; --jade:#98C8B8; --rule:#415A60; --boundary:#78928F; --control:#162832; --hover:#213A43; --on-metal:#17282D; --scroll:#597A7D; }
@media(prefers-color-scheme:light) { :root:not([data-theme="dark"]) { color-scheme:light; --canvas:#E7E5DB; --ink:#203B3C; --muted:#52665F; --metal:#775B38; --jade:#345C5C; --rule:#99ACA2; --boundary:#71877B; --control:#EDEEE3; --hover:#D6DED3; --on-metal:#FFF7E5; --scroll:#718D83; } }
:root[data-theme="light"] { color-scheme:light; --canvas:#E7E5DB; --ink:#203B3C; --muted:#52665F; --metal:#775B38; --jade:#345C5C; --rule:#99ACA2; --boundary:#71877B; --control:#EDEEE3; --hover:#D6DED3; --on-metal:#FFF7E5; --scroll:#718D83; }
* { box-sizing:border-box; }
html { min-width:280px; scroll-padding-block:24px; }
body { margin:0; color:var(--ink); background:var(--canvas); font-family:'IBM Plex Sans',sans-serif; -webkit-font-smoothing:antialiased; }
button,input { font:inherit; }
a,button,input { -webkit-tap-highlight-color:transparent; }
a,button { color:inherit; text-decoration:none; }
button { cursor:pointer; }
[hidden] { display:none !important; }
::selection { color:var(--on-metal); background:var(--metal); }
.shell { width:100%; max-width:2320px; margin-inline:auto; padding:28px 48px 36px; }
.glyph-library { position:absolute; width:0; height:0; overflow:hidden; pointer-events:none; }
.masthead { display:grid; grid-template-columns:minmax(0,1fr) minmax(240px,380px) auto; align-items:center; gap:36px; padding-block-end:24px; }
h1 { margin:0; color:var(--metal); font-family:'Alegreya Sans',sans-serif; font-weight:500; font-size:72px; line-height:1; letter-spacing:-.045em; }
.finder { display:flex; align-items:center; min-width:0; gap:4px; }
.search-box { position:relative; flex:1 1 auto; min-width:0; }
.search-box>svg { position:absolute; inset-inline-start:14px; top:14px; width:20px; height:20px; color:var(--muted); pointer-events:none; }
#app-search { display:block; width:100%; min-width:0; min-height:48px; padding:10px 36px 10px 44px; border:1px solid var(--boundary); border-radius:2px; color:var(--ink); background:var(--control); font-size:16px; }
#app-search::placeholder { color:var(--muted); opacity:1; }
#search-clear { display:grid; place-items:center; flex:0 0 44px; width:44px; height:48px; border:0; color:var(--muted); background:transparent; }
#search-clear:hover { color:var(--metal); }
#search-clear svg { width:18px; height:18px; }
#theme-controls { display:flex; align-items:center; gap:4px; }
#theme-controls button,.instrument-tools button { display:grid; place-items:center; width:44px; height:44px; padding:10px; border:1px solid transparent; border-radius:50%; background:transparent; color:var(--muted); }
#theme-controls button:hover,.instrument-tools button:hover { color:var(--metal); border-color:var(--rule); }
#theme-controls button[aria-pressed="true"] { background:var(--metal); color:var(--on-metal); }
#theme-controls svg,.instrument-tools svg { display:block; width:22px; height:22px; }
.workspace { display:grid; grid-template-columns:minmax(0,1.65fr) minmax(320px,.7fr); gap:48px; align-items:start; }
.instrument-wrap { min-width:0; display:flex; justify-content:center; position:relative; }
#instrument { position:relative; isolation:isolate; width:min(100%,calc(100svh - 176px),1120px); aspect-ratio:1; min-width:0; }
.instrument-poster,#iris-canvas { position:absolute; inset:0; display:block; width:100%; height:100%; pointer-events:none; }
.instrument-poster { z-index:0; }
.poster-light { display:none; }
:root[data-theme="light"] .poster-dark { display:none; }
:root[data-theme="light"] .poster-light { display:block; }
@media(prefers-color-scheme:light) { :root:not([data-theme="dark"]) .poster-dark { display:none; } :root:not([data-theme="dark"]) .poster-light { display:block; } }
#iris-canvas { z-index:1; opacity:0; transition:opacity 420ms ease; }
:root[data-scene-status="ready"] #iris-canvas { opacity:1; }
.sector-button { position:absolute; z-index:3; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px; width:142px; min-height:96px; padding:8px; transform:translate(-50%,-50%); border:0; color:var(--muted); background:transparent; font-size:15px; line-height:1.3; text-align:center; }
.sector-emblem { display:grid; place-items:center; width:56px; height:56px; border:1px solid var(--boundary); border-radius:50%; color:var(--metal); background:var(--canvas); transition:transform 180ms ease,border-color 180ms ease; }
.sector-emblem svg { width:40px; height:40px; }
.sector-name { max-width:14ch; padding:2px 4px; background:var(--canvas); }
.sector-button:hover,.sector-button[aria-pressed="true"] { color:var(--ink); }
.sector-button:hover .sector-emblem,.sector-button[aria-pressed="true"] .sector-emblem { border-color:var(--metal); transform:scale(1.12); color:var(--jade); }
.sector-button[aria-pressed="true"] .sector-emblem { box-shadow:0 0 0 4px var(--canvas),0 0 0 5px var(--rule); }
.sector-0 { left:50%; top:7.7%; }
.sector-1 { left:86.6%; top:28.85%; }
.sector-2 { left:86.6%; top:71.15%; }
.sector-3 { left:50%; top:92.3%; }
.sector-4 { left:13.4%; top:71.15%; }
.sector-5 { left:13.4%; top:28.85%; }
.instrument-tools { position:absolute; z-index:4; inset-inline-end:0; bottom:0; display:flex; align-items:center; gap:8px; }
#scene-enable { width:auto; min-width:96px; height:44px; border-radius:2px; padding:8px 12px; color:var(--ink); background:var(--control); border-color:var(--rule); font-size:14px; }
.instrument-tools button:disabled { cursor:default; }
.motion-play { display:none; }
#scene-motion[aria-pressed="true"] { color:var(--on-metal); background:var(--metal); }
#scene-motion[aria-pressed="true"] .motion-play { display:block; }
#scene-motion[aria-pressed="true"] .motion-pause { display:none; }
.directory-panel { min-width:0; padding-inline-start:32px; border-inline-start:1px solid var(--rule); margin-top:48px; }
.directory-controls { display:flex; align-items:center; justify-content:space-between; gap:16px; min-height:48px; margin-bottom:24px; }
#show-all { display:inline-flex; align-items:center; gap:8px; min-height:44px; padding:8px 0; border:0; background:transparent; color:var(--muted); font-size:16px; }
#show-all svg { width:22px; height:22px; }
#show-all:hover,#show-all[aria-pressed="true"] { color:var(--metal); }
#search-status { color:var(--muted); font-size:14px; font-variant-numeric:tabular-nums; }
#app-directory { max-height:calc(100svh - 260px); min-height:200px; overflow-y:auto; scrollbar-width:thin; scrollbar-color:var(--scroll) transparent; padding:4px 12px 16px 4px; }
.app-group { min-width:0; margin:0 0 36px; }
.app-group h2 { margin:0 0 16px; font-family:'Alegreya Sans',sans-serif; font-size:38px; font-weight:500; line-height:1.1; letter-spacing:-.015em; text-wrap:balance; }
.app-links { display:grid; grid-template-columns:minmax(0,1fr); gap:4px; }
.app-link { display:flex; align-items:center; gap:16px; min-width:0; min-height:64px; padding:8px 10px; border:1px solid transparent; border-radius:2px; font-size:18px; font-weight:500; line-height:1.35; }
.app-icon { display:block; flex:0 0 44px; width:44px; height:44px; color:var(--metal); transition:transform 160ms ease; }
.app-label { flex:1; min-width:0; overflow-wrap:break-word; }
.link-arrow { display:block; flex:0 0 16px; width:16px; height:16px; color:var(--muted); }
.app-link:hover,.app-link:focus-visible { background:var(--hover); border-color:var(--rule); }
.app-link:hover .app-icon { transform:translateY(-2px) rotate(-4deg); color:var(--jade); }
.app-link:hover .link-arrow { color:var(--metal); }
#search-empty { margin:0; padding:24px 0; color:var(--muted); font-size:20px; line-height:1.5; }
a:focus-visible,button:focus-visible,input:focus-visible { outline:2px solid var(--metal); outline-offset:4px; }
.skip-link { position:absolute; top:8px; inset-inline-start:24px; z-index:10; transform:translateY(-180%); padding:12px 16px; background:var(--metal); color:var(--on-metal); }
.skip-link:focus { transform:none; }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; border:0; }
@media(min-width:1800px) { .shell { padding:32px 64px 40px; } .workspace { gap:64px; } .directory-panel { padding-inline-start:40px; } .app-link { min-height:68px; font-size:20px; } .app-icon { width:48px; height:48px; flex-basis:48px; } }
@media(max-width:1199px) { .shell { padding:24px; } .workspace { gap:24px; grid-template-columns:minmax(0,1.3fr) minmax(300px,.8fr); } .directory-panel { padding-inline-start:20px; } .masthead { gap:20px; } h1 { font-size:60px; } .sector-button { width:110px; font-size:14px; gap:6px; } .sector-emblem { width:48px; height:48px; } .sector-emblem svg { width:34px; height:34px; } }
@media(max-width:899px) { .masthead { grid-template-columns:minmax(0,1fr) auto; gap:16px; } .finder { grid-row:2; grid-column:1/-1; } .workspace { grid-template-columns:minmax(0,1fr); gap:24px; } #instrument { width:min(100%,680px); } .directory-panel { border-inline-start:0; border-top:1px solid var(--rule); padding-inline-start:0; padding-top:20px; margin-top:0; } #app-directory { max-height:none; overflow:visible; padding:4px; } .app-links { grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px 20px; } .directory-controls { margin-bottom:16px; } .app-group h2 { font-size:34px; } }
@media(max-width:499px) { .shell { padding:20px 16px 28px; } h1 { font-size:50px; } .masthead { gap:12px; padding-bottom:16px; } .sector-button { width:92px; min-height:80px; padding:4px; font-size:12px; gap:4px; } .sector-emblem { width:40px; height:40px; } .sector-emblem svg { width:30px; height:30px; } .sector-name { max-width:12ch; } .instrument-tools { bottom:-8px; } #scene-enable { min-width:80px; font-size:12px; } .workspace { gap:32px; } .app-links { grid-template-columns:minmax(0,1fr); } .app-link { min-height:64px; font-size:18px; } .app-group h2 { font-size:34px; } }
@media(max-width:499px) { #instrument { margin-top:16px; } .sector-1,.sector-2 { left:84.5%; } .sector-4,.sector-5 { left:15.5%; } }
@media(max-width:319px) { h1 { font-size:36px; } .masthead { gap:8px; } }
@media(prefers-reduced-motion:reduce) { *,*::before,*::after { animation:none !important; transition:none !important; scroll-behavior:auto !important; } .app-link:hover .app-icon { transform:none; } .sector-button:hover .sector-emblem { transform:none; } }
@media(forced-colors:active) { .instrument-poster,#iris-canvas { display:none; } .sector-emblem,.sector-button[aria-pressed="true"] .sector-emblem { background:Canvas; color:CanvasText; border-color:ButtonText; box-shadow:none; } .sector-button[aria-pressed="true"] { outline:2px solid Highlight; } #theme-controls button[aria-pressed="true"] { background:Highlight; color:HighlightText; } .app-link:hover,.app-link:focus-visible { background:Highlight; color:HighlightText; } .app-icon,.link-arrow { color:currentColor; } }
