:root{--bg:#e8e7e1;--ink:#23231e;--muted:#79796e}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--ink);font-family:Arial,Helvetica,sans-serif;margin:0;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}a:hover,button:hover{text-decoration:underline;text-underline-offset:4px}button{font:inherit;color:inherit;cursor:pointer;border:0;background:none;padding:0}button:focus-visible,a:focus-visible{outline:1px solid var(--ink);outline-offset:3px}[hidden]{display:none!important}.ix-head{height:88px;padding:0 clamp(21px,3.2vw,55px);display:flex;align-items:center;justify-content:space-between;font-size:12px}.ix-brand{font-size:24px;font-weight:700;letter-spacing:-.08em}.ix-brand span{font-weight:400}.ix-head nav{display:flex;gap:clamp(16px,3vw,48px)}.ix-head nav [aria-current=page]{text-decoration:underline;text-underline-offset:4px}.ix-title{display:grid;grid-template-columns:1fr 1fr;gap:20px;padding:clamp(55px,10vh,125px) clamp(21px,3.2vw,55px) 58px;align-items:end}.ix-title>span{grid-column:1/-1;font-size:10px;letter-spacing:.055em}.ix-title h1{font-size:clamp(94px,15vw,235px);letter-spacing:-.105em;line-height:.8;font-weight:400;margin:0}.ix-title h1 .ref{font-size:clamp(15px,1.8vw,28px);vertical-align:top;display:inline-block;letter-spacing:-.05em;transform:translate(.4em,.35em);color:var(--muted)}.ix-title p{justify-self:end;font:italic clamp(15px,1.6vw,22px)/1.35 Georgia,serif;margin:0;max-width:390px}.controls{display:flex;justify-content:space-between;align-items:center;padding:17px clamp(21px,3.2vw,55px);border-top:1px solid #b4b3a9;border-bottom:1px solid #b4b3a9;font-size:12px;gap:14px}.filters{display:flex;gap:clamp(14px,2vw,35px)}.controls button{color:var(--muted)}.controls button.selected,.controls button.active{color:var(--ink);text-decoration:underline;text-underline-offset:4px}.layout-switch{display:flex;align-items:center;gap:11px}.layout-switch #count{margin-right:35px;color:var(--muted)}.archive-field{height:clamp(1050px,125vw,1730px);position:relative;padding:0 20px;overflow:hidden}.archive-field .record{position:absolute;left:var(--x);top:var(--y);width:var(--w);min-width:108px;max-width:290px;user-select:none;touch-action:none;z-index:var(--z);cursor:grab;transform:translate(var(--dx,0px),var(--dy,0px));background:none}.archive-field .record.dragging{z-index:50;cursor:grabbing}.record img{display:block;width:100%;height:auto;max-height:250px;object-fit:contain;pointer-events:none;mix-blend-mode:multiply}.record-label{font-size:10px;display:flex;flex-direction:column;gap:4px;margin-top:7px;line-height:1.25}.record-label strong{font-weight:400;font-size:11px}.record-label small{color:var(--muted);font-size:9px}.record:hover .record-label strong{text-decoration:underline;text-underline-offset:2px}.archive-field.filtered .record:not([hidden]){transform:translate(var(--dx,0px),var(--dy,0px))}.archive-table{padding:55px clamp(21px,3.2vw,55px) 120px}.archive-table-row{width:100%;display:grid;grid-template-columns:40px 145px minmax(160px,1fr) 1fr 45px;gap:20px;border-bottom:1px solid #b4b3a9;padding:14px 0;text-align:left;align-items:center;font-size:11px}.archive-table-row:first-child{border-top:1px solid #b4b3a9}.archive-table-row strong{font-size:clamp(17px,2vw,26px);letter-spacing:-.04em;font-weight:400}.archive-table-row img{height:53px;width:70px;object-fit:contain;mix-blend-mode:multiply}.archive-table-row:hover strong{text-decoration:underline;text-underline-offset:3px}.archive-table-row>span:nth-child(2),.archive-table-row>span:nth-child(4){color:var(--muted)}footer{padding:23px clamp(21px,3.2vw,55px) 35px;display:flex;justify-content:space-between;gap:18px;font-size:11px}footer span{color:var(--muted)}.inspector{position:fixed;z-index:30;inset:0 0 0 auto;width:min(470px,100vw);background:#f3f2ed;box-shadow:-20px 0 70px #25251d15;padding:30px clamp(25px,3vw,48px);overflow:auto;animation:inslide .35s ease}.inspector-top{display:flex;justify-content:space-between;font-size:11px}.inspector>img{max-width:100%;width:100%;height:34vh;object-fit:contain;margin:42px 0 32px;mix-blend-mode:multiply}.record-number{color:var(--muted);font-size:11px}.inspector h2{font-size:clamp(34px,4vw,50px);font-weight:400;line-height:1.05;letter-spacing:-.055em;margin:16px 0 40px}.inspect-data{display:grid;grid-template-columns:84px 1fr;gap:13px;font-size:12px}.inspect-data span{color:var(--muted)}.inspect-data p{margin:0}.inspect-links{margin-top:50px;display:flex;justify-content:space-between;font-size:12px;gap:15px}.inspector-note{display:block;margin-top:70px;color:var(--muted);font-size:10px}@keyframes inslide{from{transform:translateX(30px);opacity:.5}to{transform:none;opacity:1}}@media(max-width:760px){.ix-head{height:68px}.ix-brand{font-size:21px}.ix-head nav{gap:15px;font-size:11px}.ix-title{padding-top:80px;grid-template-columns:1fr}.ix-title>span{grid-column:1}.ix-title h1{font-size:110px}.ix-title p{justify-self:start;font-size:16px}.controls{flex-wrap:wrap;gap:20px}.layout-switch #count{margin-right:8px}.archive-field{height:1900px}.archive-field .record{min-width:95px;max-width:150px}.record img{max-height:160px}.archive-table-row{grid-template-columns:26px 1fr 52px;gap:8px}.archive-table-row span:nth-child(2),.archive-table-row span:nth-child(4){display:none}.archive-table-row img{height:46px;width:46px}.archive-table-row strong{font-size:19px}footer span:nth-child(2){display:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

/* v16 / persistent associations rather than temporary highlights */
.archive-scope{padding:15px 0 18px;border-bottom:1px solid currentColor;display:flex;justify-content:space-between;gap:15px;font-size:11px;align-items:baseline}.archive-scope[hidden]{display:none!important}.archive-scope button,.inspect-connections button{border:0;background:none;text-decoration:underline;text-underline-offset:4px;cursor:pointer;font:inherit}.inspect-connections{display:flex;flex-direction:column;align-items:start;gap:10px;margin:28px 0 12px;font-size:12px}.inspect-connections>span{font-size:10px;opacity:.6;margin-bottom:3px}.inspect-connections button{text-align:left}.archive-field .record[hidden],.archive-table .archive-table-row[hidden]{display:none!important}@media(max-width:760px){.archive-scope{flex-wrap:wrap}}

.archive-scope{padding:16px clamp(21px,3.2vw,55px);gap:20px}.archive-scope>span{min-width:0;overflow-wrap:anywhere}.archive-scope button{flex-shrink:0}

/* v21 / additional source-faithful thesis records */
.archive-field{height:clamp(1450px,152vw,2080px)}
@media(max-width:760px){.archive-field{height:2250px}}

/* v22: allow more breathing room for Tian and Kimse records in the working field */
.archive-field{height:clamp(2150px,194vw,2810px)}
@media(max-width:760px){.archive-field{height:3550px}}

/* v24: provide separate space for the approved KERATIN and ghost material records */
.archive-field{height:clamp(3550px,285vw,4200px)}
@media(max-width:760px){.archive-field{height:5200px}}

/* v25 / reserve the lower quarter of the field for Bari and Dongpo records */
.archive-field{height:5600px}
@media(max-width:760px){.archive-field{height:7200px}}

/* v26 / SEEWALD process studies including playable archive video */
.archive-field{height:5000px}@media(max-width:760px){.archive-field{height:6600px}}
.archive-field .record-video-label{position:absolute;top:8px;right:0;z-index:2;background:#e8e7e1e8;padding:4px 6px;font-size:10px}
.archive-table-row{position:relative}.catalogue-video-label{position:absolute;right:66px;font-size:10px}
.inspector>video{display:block;max-width:100%;width:100%;height:34vh;object-fit:contain;margin:42px 0 32px;background:var(--bg)}
.inspector>video[hidden]{display:none!important}

/* v28 / compact exploratory field; the catalogue and stable record IDs are unchanged. */
.field-head{padding:20px clamp(21px,3.2vw,55px) 7px;display:flex;justify-content:space-between;gap:18px;font-size:10px;color:var(--muted);scroll-margin-top:18px}
.field-head>span:first-child{color:var(--ink)}
.archive-field{height:auto!important;min-height:0!important;overflow:visible;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));align-items:start;column-gap:clamp(15px,2.25vw,40px);row-gap:clamp(25px,3vw,46px);padding:24px clamp(21px,3.2vw,55px) 18px}
.archive-field .record{position:relative;left:auto;top:auto;width:auto;min-width:0;max-width:none;grid-column:span var(--spread,3);align-self:start;margin-top:var(--drop,0px);touch-action:pan-y;transform:translate(var(--dx,0px),var(--dy,0px));}
.archive-field .record.dragging{z-index:500}
.archive-field .record img{width:100%;height:var(--img-height,170px);max-height:none;object-fit:contain;object-position:left bottom;}
.archive-field .record .record-label{max-width:100%;margin-top:10px;gap:4px}
.archive-field .record .record-label strong{font-size:11px;line-height:1.35;overflow-wrap:anywhere}
.archive-field .record .record-video-label{top:0;right:0}
.field-nav{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:21px clamp(21px,3.2vw,55px) 40px;border-top:1px solid #b4b3a9;font-size:12px}
.field-nav>span{color:var(--muted);font-size:10px}
.field-nav button:disabled{opacity:.32;cursor:default;text-decoration:none}
.archive-field:empty{padding:0;min-height:0}
@media(max-width:760px){
 .field-head{padding-top:17px;font-size:10px}.field-head>span:last-child{display:none}
 .archive-field{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:clamp(12px,4vw,24px);row-gap:25px;padding-top:19px;padding-bottom:24px}
 .archive-field .record{grid-column:span 1!important;margin-top:0;}
 .archive-field .record img{height:clamp(118px,39vw,178px);object-position:left center}
 .archive-field .record:nth-child(7n+1){grid-column:span 2!important;width:min(70%,350px);justify-self:center;margin:5px 0}
 .archive-field .record:nth-child(7n+1) img{height:clamp(172px,55vw,265px);object-position:center center}
 .archive-field .record .record-label strong{font-size:11px}
 .field-nav{padding-top:20px;padding-bottom:30px;font-size:11px}
}

.archive-field .field-empty{grid-column:1/-1;font-size:12px;color:var(--muted);padding:35px 0 60px}

/* v29: keep archive-video presentation proportional, with no dark letterbox. */
.inspector>video:not([hidden]){height:auto;max-height:34vh;object-fit:contain;background:var(--bg)}

/* v32 / publication pass: balanced fields + explicit index-only status */
.archive-field{row-gap:clamp(22px,2.5vw,38px);padding-top:20px;padding-bottom:24px}
.archive-field .record img{height:var(--img-height,158px)}
.archive-field .record .record-label small{letter-spacing:.015em}
.archive-table-row>span:nth-child(2){font-size:10px;line-height:1.35}
.inspect-document{display:inline-block;margin-top:30px;font-size:11px;text-decoration:underline;text-underline-offset:4px}
.inspect-document[hidden]{display:none!important}
.inspect-links button:disabled{opacity:.48;cursor:default;text-decoration:none}
.archive-scope{padding-left:clamp(21px,3.2vw,55px);padding-right:clamp(21px,3.2vw,55px)}
@media(max-width:760px){.archive-field{row-gap:21px}.archive-field .record img{height:clamp(112px,36vw,168px)}.archive-table-row>span:nth-child(2){display:none}.inspect-document{margin-top:26px}}

/* v32.1 / stable field-page rhythm without blank scoped fields */
.archive-field:not(.scoped-field){min-height:clamp(1090px,96vw,1390px)!important}
.archive-field.scoped-field{min-height:0!important}
.inspector h2{overflow-wrap:anywhere}
.inspector.is-index-only h2{font-size:clamp(28px,3.35vw,42px);line-height:1.08}
@media(max-width:760px){.archive-field:not(.scoped-field){min-height:0!important}.inspector.is-index-only h2{font-size:32px}}


/* v33 / one continuous archive field */
#field-nav{display:none!important}
.archive-field:not(.scoped-field){min-height:0!important;padding-top:26px;padding-bottom:70px;row-gap:clamp(34px,3.25vw,56px)}
.archive-field:not(.scoped-field) .record{margin-bottom:clamp(5px,1vw,14px)}
.archive-field:not(.scoped-field) .record:nth-child(13n+1){grid-column:span 4}
.archive-field:not(.scoped-field) .record:nth-child(17n+6){grid-column:span 5}
.archive-field:not(.scoped-field) .record:nth-child(19n+9){grid-column:span 3}
.field-head{border-bottom:1px solid #b4b3a9;padding-bottom:15px}
@media(max-width:760px){
 .archive-field:not(.scoped-field){padding-bottom:55px;row-gap:30px}
 .archive-field:not(.scoped-field) .record:nth-child(13n+1),.archive-field:not(.scoped-field) .record:nth-child(17n+6),.archive-field:not(.scoped-field) .record:nth-child(19n+9){grid-column:span 1!important;width:auto;justify-self:stretch}
 .archive-field:not(.scoped-field) .record:nth-child(9n+1){grid-column:span 2!important;width:min(72%,350px);justify-self:center;margin:8px 0 14px}
 .archive-field:not(.scoped-field) .record:nth-child(9n+1) img{height:clamp(170px,55vw,265px);object-position:center center}
}

/* v34.2 / mobile video records: keep the play cue attached to the poster itself.
   The mark is drawn in CSS so iOS cannot substitute the blue emoji play button. */
.archive-field .record.has-video .record-media-video{
 position:relative;display:inline-block;max-width:100%;vertical-align:top;line-height:0;
}
.archive-field .record.has-video .record-media-video img{
 display:block;width:auto!important;height:auto!important;max-width:100%;max-height:var(--img-height,158px);object-fit:contain;object-position:left center;
}
.archive-field .record.has-video .record-video-mark{
 position:absolute;right:7px;bottom:7px;width:22px;height:22px;border:1px solid rgba(35,35,30,.72);
 background:rgba(232,231,225,.84);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);
}
.archive-field .record.has-video .record-video-mark:after{
 content:"";position:absolute;left:8px;top:6px;width:0;height:0;border-top:4.5px solid transparent;border-bottom:4.5px solid transparent;border-left:7px solid var(--ink);
}
.archive-field .record.has-video:hover .record-video-mark{background:rgba(243,242,237,.96)}
/* retire the detached legacy video label */
.archive-field .record-video-label{display:none!important}
@media(max-width:760px){
 .archive-field .record.has-video .record-media-video img{max-height:clamp(150px,48vw,225px)}
 .archive-field .record.has-video .record-video-mark{right:6px;bottom:6px;width:21px;height:21px}
 .archive-field .record.has-video .record-video-mark:after{left:7px;top:5.5px}
}

/* catalogue uses the same typographic play mark, never an emoji glyph */
.catalogue-video-label{width:13px;height:13px;border:1px solid currentColor;display:block}
.catalogue-video-label:after{content:"";position:absolute;width:0;height:0;border-top:3px solid transparent;border-bottom:3px solid transparent;border-left:5px solid currentColor;transform:translate(4px,3px)}

/* v34.3 / mobile field polish after full-device QA.
   Full-width pauses are assigned to visually useful archive records rather than
   every nth item, so documents and small source images never become accidental heroes. */
@media(max-width:760px){
 .archive-field:not(.scoped-field) .record:nth-child(9n+1){
  grid-column:span 1!important;width:auto;justify-self:stretch;margin:0;
 }
 .archive-field:not(.scoped-field) .record:nth-child(9n+1) img{
  height:clamp(112px,36vw,168px);object-position:left center;
 }
 .archive-field:not(.scoped-field) .record.is-anchor{
  grid-column:1/-1!important;width:min(76%,360px);justify-self:center;margin:8px 0 13px;
 }
 .archive-field:not(.scoped-field) .record.is-anchor img{
  height:clamp(180px,52vw,238px);object-position:center center;
 }
 .archive-field:not(.scoped-field){row-gap:27px;padding-bottom:calc(62px + env(safe-area-inset-bottom));}
 .archive-field .record .record-label small{font-size:10px;line-height:1.3}
 .archive-field .record .record-label strong{font-size:11.5px;line-height:1.32}
 footer{padding-bottom:calc(38px + env(safe-area-inset-bottom));}
}

/* Scoped material views should remain exploratory fields. Keep them dense and
   neutral: the curated pauses are only for the full 84-record archive. */
.archive-field.scoped-field .record.is-anchor{width:auto;justify-self:stretch;margin-top:0}
