*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;background:#F0CA00;color:#000000;font-family:'Times New Roman',Times,serif}body{overflow:hidden}button,input,select,output{font:inherit;color:inherit}button,a,input,select{touch-action:manipulation}a{color:inherit;text-decoration:none}a:hover{text-decoration:underline}button{background:none;border:0;cursor:pointer}button:disabled{opacity:.35;cursor:default}header{position:absolute;top:4%;left:5%;right:5%;display:grid;grid-template-columns:1fr 2fr 1fr;align-items:baseline;gap:16px;border-bottom:1px solid;padding-bottom:10px;z-index:5;background:#F0CA00}#brand{font-size:26px}#title{text-align:center;font-size:20px}#mode{text-align:right;font-size:16px}#controls{position:absolute;left:5%;right:5%;top:12%;display:flex;align-items:center;gap:28px;font-size:16px}label{display:flex;align-items:center;gap:9px}input[type=search]{width:220px;background:transparent;border:0;border-bottom:1px solid;padding:5px;border-radius:0}select{background:#F0CA00;border:0;border-bottom:1px solid;padding:5px}input[type=range]{width:85px;accent-color:#000}#count{margin-left:auto;font-size:14px}#field{position:absolute;inset:20% 5% 20%;overflow:hidden}#grid,#cards{position:absolute;inset:0;width:100%;height:100%}#grid path{fill:none;stroke:#000;stroke-width:.65;stroke-dasharray:.01 2;stroke-linecap:round;vector-effect:non-scaling-stroke}#cards{display:grid;align-content:center;justify-content:center}.card{min-width:0;min-height:0;display:flex;flex-direction:column;text-align:left;padding:12px;gap:7px;border-right:1px dotted #000;border-bottom:1px dotted #000}.preview{display:flex;align-items:center;justify-content:center;flex:1;min-height:0;overflow:hidden}.preview img,.preview svg{width:100%;height:100%;object-fit:contain;display:block}.label{font-size:14px;line-height:1.2;background:#F0CA00}.label span{display:block;font-size:12px;margin-top:3px}.card:hover .label{text-decoration:underline}.card:focus-visible{outline:2px solid;outline-offset:-3px}footer{position:absolute;left:5%;right:5%;bottom:3%;text-align:center;z-index:5;background:#F0CA00}#pagination{display:flex;justify-content:center;align-items:center;gap:20px}#pagination button{font-size:32px}#page{font-size:14px}#practices{display:flex;justify-content:center;gap:8px 19px;flex-wrap:wrap;margin:10px 0;font-size:14px}#note{font-size:12px}#empty{position:absolute;top:35%;width:100%;text-align:center}body.table #field{left:0;right:0;bottom:0}body.table #cards{display:block}body.table #controls{display:none}body.table #note,body.table #mode{display:none}.object{position:absolute;transform-origin:0 0;width:240px;padding:0;text-align:left}.object .preview{width:100%;height:100%}.object .label{position:absolute;top:100%;opacity:0}.object:hover .label,.object:focus-visible .label{opacity:1}.text{white-space:pre-line;font-size:19px;line-height:1.3;background:#F0CA00;padding:12px;overflow:hidden}.object .text{width:100%;height:100%}dialog{background:#F0CA00;color:#000;border:1px solid;width:min(1100px,94vw);height:86dvh;padding:38px 28px 22px;overflow:hidden}dialog[open]{display:flex;flex-direction:column}dialog::backdrop{background:rgba(0,0,0,.65)}#close{position:absolute;right:12px;top:5px;font-size:30px}#large{flex:1;min-height:0;display:flex;align-items:center;justify-content:center}#large img,#large svg{width:100%;height:100%;object-fit:contain}#large .text{font-size:clamp(16px,2vw,23px);max-width:750px;max-height:100%;line-height:1.5}#caption{border-top:1px solid;padding-top:12px;margin-top:15px}#credit{font-size:12px;margin:6px 0}#source{text-decoration:underline;font-size:14px}[hidden]{display:none!important}input:focus-visible,select:focus-visible,a:focus-visible,button:focus-visible{outline:1px solid;outline-offset:3px}@media(max-width:640px){header{top:3%;grid-template-columns:1fr auto}#brand{font-size:21px}#title{font-size:16px;text-align:right}#mode{display:none}#controls{top:11%;gap:12px;flex-wrap:wrap;font-size:14px}input[type=search]{width:165px}#controls label:first-child{width:100%}#count{font-size:12px}#field{top:25%;bottom:24%}.card{padding:7px;gap:4px}.label{font-size:12px}.label span{font-size:11px}footer{bottom:2%;left:6%;right:6%}#practices{font-size:12px;gap:6px 13px;margin:7px 0}#note{font-size:10px}body.table header{grid-template-columns:1fr}body.table #title{text-align:left}dialog{padding:36px 16px 16px}}@media(max-height:500px){#controls{top:18%}#field{top:30%;bottom:24%}header{top:2%}footer{bottom:1%}#practices{margin:0}#note{display:none}}

/* Catalogue is a continuous orthogonal field. Project tables remain finite views. */
body:not(.table) #field{overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-color:#000 #F0CA00;scrollbar-width:thin}body:not(.table) #cards{align-content:start;min-height:100%;position:relative}body:not(.table) #grid{display:none}body:not(.table) .card{border-top:1px dotted #000;border-left:1px dotted #000}#pagination{display:none}body:not(.table) #field{bottom:15%}@media(max-width:640px){body:not(.table) #field{bottom:21%}}

/* One coordinate system: every three-cell specimen scales with the infinite grid. */
body:not(.table) #field{left:0;right:0;overflow:auto}body:not(.table) #grid{display:block;pointer-events:none}body:not(.table) #cards{position:absolute;min-height:0}body:not(.table) .card{border:0;padding:16px 15px 22px}.card .preview{background:transparent}.card .label{background:#F0CA00}.card:hover{outline:1px dotted #000;outline-offset:-12px}#mode{display:block!important;white-space:nowrap;font-size:14px}#impressum{display:block;width:max-content;margin:8px auto;font-size:16px}#note{display:none}footer{background:transparent;pointer-events:none}footer>a,footer nav{pointer-events:auto;background:#F0CA00}footer nav{width:fit-content;max-width:100%;margin-inline:auto!important;padding:4px 8px}body.info #controls{display:none}body.info #field{overflow:hidden}body.info #cards{overflow:hidden}.impressum-copy{position:absolute;top:12%;left:15%;width:70%;max-width:720px;background:#F0CA00;padding:16px;font-size:16px;line-height:1.45}.impressum-copy h1{font-size:20px;font-weight:normal}body.info #practices{display:none}body.table #mode{display:block!important}@media(max-width:640px){header{grid-template-columns:1fr auto}#mode{grid-column:2;grid-row:1;font-size:11px}#title{grid-column:1/-1;grid-row:2;text-align:center}#controls{top:15%}body.table header{grid-template-columns:1fr auto}.impressum-copy{left:8%;width:84%;top:5%;font-size:14px;padding:12px}body.info #field{bottom:12%}}
