:root{--navy:#102940;--navy2:#1b3954;--red:#9f3c32;--red2:#b45446;--gold:#c59a57;--cream:#f7f1e8;--paper:#fffcf7;--ink:#172b3e;--muted:#6c6b68;--line:#e8ded0;--shadow:0 12px 35px rgba(53,42,29,.065)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--cream);color:var(--ink);font-family:"Noto Sans CJK SC","Microsoft YaHei",sans-serif;font-size:15px;line-height:1.55}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}a{color:inherit;text-decoration:none}[hidden]{display:none!important}:focus-visible{outline:3px solid #dc9f52;outline-offset:3px}.skip-link{position:absolute;z-index:1000;top:-60px;left:10px;background:#fff;padding:9px 15px}.skip-link:focus{top:10px}.shell{display:flex;min-height:100vh}.sidebar{position:sticky;top:0;flex:0 0 212px;width:212px;height:100vh;background:linear-gradient(145deg,#173854,#10283d 55%,#152f47);color:#f7efe3;display:flex;flex-direction:column;overflow:hidden;z-index:20}.sidebar:after{content:"";position:absolute;inset:auto -50px -70px -50px;height:285px;border:1px solid rgba(202,162,97,.23);border-radius:45%;box-shadow:0 -30px 0 -29px rgba(202,162,97,.3),0 -70px 0 -69px rgba(202,162,97,.25),0 -115px 0 -114px rgba(202,162,97,.2);pointer-events:none}.brand{height:170px;display:flex;align-items:center;justify-content:center;flex-direction:column;border-bottom:1px solid rgba(255,255,255,.12);letter-spacing:.12em}.brand-symbol{color:#d4ad70;font-size:50px;line-height:1}.brand strong{font-family:"Noto Serif CJK SC","Songti SC",serif;font-size:25px;font-weight:700;letter-spacing:.16em}.brand span{font-size:12px;color:#d8c5a9;letter-spacing:.25em}.sidebar nav{padding-top:18px}.nav-link{width:100%;min-height:63px;border:0;background:none;color:#e5e4df;display:flex;align-items:center;gap:16px;text-align:left;padding:10px 28px;font-size:16px;letter-spacing:.06em;transition:.2s}.nav-link:hover,.nav-link.active{background:linear-gradient(90deg,#ab5144,#87392f);color:#fff}.nav-link.active{border-left:4px solid #e5bb77;padding-left:24px}.nav-icon{display:grid;place-items:center;width:25px;font-size:24px;font-family:serif;color:#dbc9ad}.sidebar-foot{margin:auto 26px 38px;color:#d6b88a;font-family:serif;font-size:12px;letter-spacing:.25em;line-height:2.3;z-index:1}.main-wrap{min-width:0;flex:1;background:radial-gradient(circle at 82% -10%,rgba(239,220,187,.28),transparent 36%),var(--cream)}.topbar{height:55px;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:0 clamp(20px,3vw,52px);border-bottom:1px solid rgba(173,138,92,.18)}.topbar-kicker{color:#8a796b;font-family:serif;font-size:12px;letter-spacing:.18em}.topbar-right{display:flex;align-items:center;gap:18px}.global-search{display:flex;align-items:center;width:min(340px,30vw);height:36px;border:1px solid #dfd4c5;border-radius:99px;background:rgba(255,255,255,.42);padding:0 14px;gap:8px}.global-search span{font-size:27px;line-height:1;color:#253a4b}.global-search input{width:100%;border:0;background:transparent;outline:0;font-size:12px}.user-mark{width:32px;height:32px;display:grid;place-items:center;border-radius:50%;background:#eadfd1;color:#856d58}.menu-button{display:none}main{max-width:1680px;margin:auto;padding:18px clamp(20px,3vw,52px) 55px}.page-head{margin:0 0 22px}.page-head h1{font-family:"Noto Serif CJK SC","Songti SC",serif;font-weight:800;font-size:clamp(35px,4vw,56px);letter-spacing:.035em;line-height:1.12;margin:6px 0 9px;color:#132b41}.page-head p{margin:0;color:#68625b;font-family:"Noto Serif CJK SC","Songti SC",serif;font-size:16px;letter-spacing:.06em}.seal{display:inline-grid;place-items:center;background:var(--red);color:#fff;border-radius:3px;font-size:11px;width:22px;height:32px;line-height:1.2;vertical-align:middle;margin-left:14px;font-weight:400}.panel{background:rgba(255,252,247,.8);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);overflow:hidden}.section-title{display:flex;align-items:center;gap:11px;margin:0 0 14px;font-size:20px;font-family:"Noto Serif CJK SC","Songti SC",serif}.section-title:before{content:"";width:4px;height:20px;background:var(--red)}.muted{color:var(--muted)}.small{font-size:12px}.subtle{font-family:serif;color:#8b7c69}.eyebrow{color:var(--red);letter-spacing:.16em;font-size:12px}.badge{display:inline-flex;align-items:center;border-radius:50px;padding:4px 9px;background:#eee2d5;color:#79573e;font-size:12px}.badge.ok{background:#e7f2e6;color:#236348}.badge.warn{background:#faecd9;color:#9e5d19}.button{min-height:44px;border:1px solid var(--red);border-radius:8px;background:var(--red);color:white;padding:10px 20px;display:inline-flex;align-items:center;justify-content:center;gap:10px;text-align:center;transition:.2s}.button:hover:not(:disabled){filter:brightness(1.1);transform:translateY(-1px)}.button.secondary{background:transparent;color:var(--red)}.button.ink{background:var(--navy);border-color:var(--navy)}.button.wide{width:100%}.icon-button{width:42px;height:42px;border:1px solid var(--line);background:#fff9f2;border-radius:50%;display:grid;place-items:center;color:var(--ink)}.segmented,.chips{display:flex;gap:9px;flex-wrap:wrap}.chip{border:1px solid transparent;border-radius:30px;padding:8px 17px;background:#f0e9e1;color:#34404a;min-height:40px}.chip:hover,.chip.active{background:var(--red);color:white}.field{display:grid;gap:7px;margin:14px 0}.field label{font-weight:700}.field input:not([type="range"]),.field select{width:100%;min-height:44px;padding:8px 12px;border:1px solid #d9ccbe;border-radius:7px;background:#fffdfa;color:var(--ink)}.field input[type="range"]{width:100%;accent-color:var(--red)}.crop{position:relative;overflow:hidden;background:#e5d9c7;aspect-ratio:var(--ratio)}.crop img{position:absolute;max-width:none;height:auto;user-select:none;pointer-events:none}.crop.rounded{border-radius:9px}.cropped-button{padding:0;border:0;background:none;display:block;width:100%}.cropped-button:hover .crop img{filter:brightness(1.07)}.card-pad{padding:18px}.rule-note{padding:14px 16px;border-radius:9px;background:#f4ebdc;color:#76572d;font-size:13px}.floating-note{position:absolute;z-index:3;background:rgba(22,28,33,.78);color:white;padding:10px 13px;border-radius:9px;box-shadow:0 5px 20px #0002;font-size:12px}.modal{border:1px solid var(--line);border-radius:15px;box-shadow:0 25px 80px #152b4480;padding:26px;max-width:min(680px,92vw);width:100%;background:var(--paper);color:var(--ink)}.modal::backdrop{background:rgba(7,20,33,.55)}.modal-close{position:absolute;right:12px;top:10px;border:0;background:transparent;font-size:30px;color:var(--ink)}.toast{position:fixed;z-index:100;bottom:24px;left:50%;transform:translate(-50%,20px);padding:11px 18px;border-radius:8px;background:#102d42;color:#fff;opacity:0;pointer-events:none;transition:.25s;box-shadow:0 10px 30px #0004}.toast.show{opacity:1;transform:translate(-50%,0)}
/* Archive */
.archive-toolbar{display:flex;align-items:center;justify-content:flex-end;gap:12px;flex-wrap:wrap;margin:-8px 0 17px}.archive-toolbar input{height:46px;max-width:410px;width:100%;border:1px solid #cfc1b1;border-radius:50px;padding:0 19px;background:#fffaf4}.archive-feature{display:grid;grid-template-columns:58% 42%;min-height:340px}.archive-feature .crop{height:100%;aspect-ratio:auto}.archive-feature-copy{padding:30px;display:flex;flex-direction:column;justify-content:center}.archive-feature-copy h2{font:700 29px "Noto Serif CJK SC",serif;margin:8px 0}.archive-meta{display:grid;grid-template-columns:100px 1fr;gap:4px 8px;font-size:13px;margin:18px 0}.archive-meta dt{color:#8c837b}.archive-meta dd{margin:0}.archive-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:14px}.archive-card{min-width:0}.archive-card .crop{height:160px;aspect-ratio:auto}.archive-card-body{padding:13px 17px}.archive-card h3{font-size:17px;margin:2px 0}.archive-card p{font-size:13px;color:var(--muted);margin:4px 0 11px}.archive-card button{border:0;background:none;color:var(--red);padding:4px 0}.content-divider{display:flex;align-items:center;justify-content:space-between;margin:24px 0 12px}.content-divider h2{margin:0;font-family:serif;font-size:24px}.content-divider button{border:0;background:none;color:var(--red)}
/* Culture */
.culture-layout{display:grid;grid-template-columns:30% 34% 36%;gap:17px}.culture-image .crop{height:432px;aspect-ratio:auto}.culture-image figcaption{padding:13px 0;font-size:15px}.culture-map{padding:17px 20px}.map-center{width:86px;height:86px;margin:15px auto 11px;border:1px solid #dfbd89;border-radius:50%;display:grid;place-items:center;color:var(--red);font-size:40px;background:#faf4e8}.map-nodes{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.map-node{display:grid;place-items:center;min-height:83px;border:1px solid #e6d7c4;border-radius:50%;background:#fff9ef;text-align:center;color:#80443c}.map-node strong{display:block}.map-node span{font-size:12px;color:#826f62}.culture-detail{padding:18px 19px}.culture-detail .segmented{border-bottom:1px solid var(--line);justify-content:space-between}.tab{border:0;border-bottom:2px solid transparent;background:transparent;color:var(--ink);padding:9px 6px}.tab.active{color:var(--red);border-color:var(--red)}.culture-copy{min-height:165px;padding:20px 4px;font:16px/1.9 "Noto Serif CJK SC",serif}.audio-box{display:flex;align-items:center;gap:10px;background:#f4ede5;border-radius:8px;padding:9px;margin:11px 0}.audio-box button{border:0;border-radius:50%;height:42px;width:42px;background:var(--red);color:#fff}.audio-progress{height:5px;flex:1;background:#ded0c2;border-radius:10px}.culture-suggestions{display:grid;grid-template-columns:repeat(6,1fr) 2fr;gap:10px}.suggestion .crop{aspect-ratio:1}.suggestion{border:2px solid transparent;border-radius:8px;padding:2px}.suggestion.active{border-color:var(--red)}.suggestion-cta{display:flex;align-items:stretch}.suggestion-cta button{width:100%}
/* Create */
.create-layout{display:grid;grid-template-columns:28% 35% 37%;gap:10px}.create-panel{padding:17px;min-width:0}.step-heading{font:700 18px "Noto Serif CJK SC",serif;margin:0 0 13px;display:flex;align-items:center;gap:10px}.step-heading b{font:700 13px sans-serif;color:white;background:var(--red);border-radius:50%;width:28px;height:28px;display:grid;place-items:center}.preset-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.preset-card{padding:4px;border:2px solid transparent;border-radius:8px;background:#fffaf2;color:var(--ink)}.preset-card.active{border-color:var(--red)}.preset-card .crop{aspect-ratio:4/5;border-radius:5px}.preset-card span{font-size:11px;display:block;padding:4px 0}.motif-picker{display:grid;grid-template-columns:repeat(5,1fr);gap:5px;margin-top:8px}.motif-picker button{padding:3px;background:#fff;border:2px solid transparent;border-radius:7px}.motif-picker button.active{border-color:var(--red)}.motif-picker .crop{aspect-ratio:1}.swatches{display:flex;gap:10px;flex-wrap:wrap;margin:10px 0}.swatch{width:32px;height:32px;border:2px solid white;border-radius:50%;box-shadow:0 0 0 1px #cbbdb0}.swatch.active{box-shadow:0 0 0 2px var(--red)}.grid-nine{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.grid-cell{position:relative;border:2px solid transparent;border-radius:9px;padding:0;overflow:hidden;background:#f6ede0;min-height:96px}.grid-cell:hover,.grid-cell:focus-visible{border-color:var(--red)}.grid-cell .crop{aspect-ratio:1}.grid-cell b{position:absolute;z-index:2;top:5px;left:6px;border-radius:50%;background:white;width:24px;height:24px;display:grid;place-items:center;color:var(--red)}.grid-actions{display:flex;gap:10px;margin-top:14px}.grid-actions button{flex:1}.preview-ribbon{min-height:458px;border-radius:11px;display:flex;justify-content:center;align-items:center;background:linear-gradient(135deg,#aa8566,#ebd9c1 43%,#28425a);overflow:hidden}.ribbon-stack{width:112px;box-shadow:0 12px 25px #0005;border-left:5px double #e7b56f;border-right:5px double #e7b56f;transform:rotate(5deg)}.ribbon-stack .crop{aspect-ratio:1}.preview-check{position:absolute;right:12px;top:20px;max-width:180px;background:#fffdf0df;border-radius:10px;padding:15px;font-size:12px}.preview-check p{margin:4px 0}.preview-actions{display:flex;gap:12px;margin-top:12px}.preview-actions .button{flex:1}
/* Tryon */
.tryon-layout{display:grid;grid-template-columns:28% 36% 36%;gap:10px}.tryon-column{padding:18px;min-width:0}.source-choices{display:flex;gap:8px}.source-choices>*{flex:1}.file-label{position:relative;overflow:hidden;cursor:pointer}.file-label input{position:absolute;inset:0;opacity:0;cursor:pointer}.tryon-motifs{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.tryon-motifs button{border:2px solid transparent;border-radius:7px;padding:2px;background:white}.tryon-motifs button.active{border-color:var(--red)}.tryon-motifs .crop{aspect-ratio:1}.portrait-stage{position:relative;background:#ddd3c5;border-radius:10px;overflow:hidden;min-height:520px}.portrait-stage .crop{position:absolute;inset:0;height:100%;aspect-ratio:auto}.portrait-stage .uploaded-portrait{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.wearable{position:absolute;z-index:3;left:50%;top:29%;width:43%;height:22px;transform:translate(-50%,-50%) rotate(-4deg);border:2px solid #dfb979;border-radius:16px;background:repeating-linear-gradient(90deg,#a94338 0 10px,#ecd6ad 10px 15px,#1b3d56 15px 25px,#ecd6ad 25px 29px);box-shadow:0 3px 5px #0005}.portrait-stage.bare .wearable{display:none}.tryon-thumb{height:187px;overflow:hidden;border-radius:8px}.tryon-thumb .crop{height:100%;aspect-ratio:auto}.compare-row{display:grid;grid-template-columns:1fr 1fr;gap:9px}.scene-card .crop{aspect-ratio:1.75}.range-value{float:right;color:var(--red)}
/* Weave */
.weave-layout{display:grid;grid-template-columns:65% 35%;gap:14px}.weave-scene{position:relative;min-height:470px;background:#563929}.weave-scene .crop{position:absolute;inset:0;height:100%;aspect-ratio:auto;filter:brightness(.88)}.weave-scene .overlay-label{position:absolute;z-index:3;background:#111b22c7;color:white;padding:7px 10px;border-radius:6px;font-size:12px}.weave-scene .overlay-label.foot{right:12%;top:10%}.weave-scene .overlay-label.waist{right:10%;bottom:18%}.weave-scene .overlay-label.warp{left:10%;top:26%}.weave-scene .interactive-threads{position:absolute;z-index:4;top:39%;left:35%;width:30%;height:29%;display:flex;justify-content:space-around;transform:perspective(500px) rotateX(20deg)}.thread{width:3px;background:#fff3;box-shadow:0 0 5px #fff;cursor:pointer;transition:.25s}.thread.selected{background:#ffd25e;box-shadow:0 0 12px #ffe9a7;transform:translateY(-9px)}.weave-scene .scene-controls{position:absolute;z-index:5;bottom:13px;left:13px;display:flex;gap:7px}.scene-controls button{background:#1c2730d9;color:white;border:1px solid #ffffff40;border-radius:7px;padding:6px 12px}.weave-guide{padding:19px}.weave-steps{display:grid;gap:5px}.weave-step{width:100%;display:flex;align-items:center;gap:10px;text-align:left;border:1px solid transparent;background:transparent;border-radius:9px;padding:8px;color:var(--ink)}.weave-step.active{border-color:#e5bbb2;background:#fbefed;color:var(--red)}.weave-step b{border-radius:50%;background:#efe8de;width:30px;height:30px;display:grid;place-items:center;flex:none}.weave-step.active b{background:var(--red);color:white}.weave-step span{font-size:14px}.weave-controls{padding:15px;margin-top:14px;background:#f6f0e7;border-radius:9px}.weave-controls h3{margin:0 0 8px}.weave-controls p{font-size:13px;margin:0 0 10px}.weave-controls .button{margin:4px 4px 4px 0}.weave-swatches{display:flex;gap:7px}.weave-swatches button{width:33px;height:33px;border:2px solid white;border-radius:50%;box-shadow:0 0 0 1px #ccc}.weave-swatches button.active{box-shadow:0 0 0 2px var(--red)}.weave-footer{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-top:14px}.weave-footer .panel{padding:14px}.weave-footer h3{margin:0 0 6px;font-size:17px}.mini-diagram{height:70px;background:repeating-linear-gradient(0deg,#d9483d 0 2px,transparent 2px 9px),repeating-linear-gradient(90deg,#1e5372 0 2px,#f3e2c5 2px 10px);border-radius:8px}.cycle-symbol{font-size:47px;line-height:1;color:var(--red);text-align:center}
/* Exhibit */
.exhibit-layout{display:grid;grid-template-columns:1fr;gap:12px}.hall{position:relative;min-height:510px;background:#c8ac8b}.hall .crop{position:absolute;inset:0;height:100%;aspect-ratio:auto}.hotspot{position:absolute;z-index:4;top:50%;left:40%;border:0;background:var(--red);color:#fff;border-radius:50%;width:44px;height:44px;font-weight:bold}.hall-nav{position:absolute;z-index:4;top:48%;border:0;border-radius:50%;width:44px;height:44px;background:#fff;color:var(--ink);font-size:27px}.hall-nav.prev{left:13px}.hall-nav.next{right:13px}.hall-caption{position:absolute;bottom:13px;left:15px;z-index:4;padding:9px 13px;background:#fffdfaeb;border-radius:7px}.chapters{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;margin-top:13px}.chapter{border:2px solid transparent;border-radius:7px;padding:3px;background:transparent;text-align:left;color:var(--ink)}.chapter.active{border-color:var(--red)}.chapter .crop{aspect-ratio:2.6}.chapter span{font-size:12px}
@media(max-width:1250px){.culture-layout{grid-template-columns:1fr 1fr}.culture-detail{grid-column:span 2}.create-layout,.tryon-layout{grid-template-columns:1fr 1fr}.create-layout>.preview-panel,.tryon-layout>.compare-panel{grid-column:span 2}.preview-ribbon{min-height:350px}}
@media(max-width:820px){.sidebar{position:fixed;left:-225px;transition:left .25s;box-shadow:15px 0 30px #0002}.sidebar.open{left:0}.menu-button{display:grid}.topbar-kicker{display:none}.global-search{width:min(330px,54vw)}main{padding:20px}.archive-feature{grid-template-columns:1fr}.archive-feature .crop{height:270px}.archive-grid{grid-template-columns:1fr 1fr}.weave-layout,.exhibit-layout{grid-template-columns:1fr}.chapters{grid-template-columns:repeat(3,1fr)}}
@media(max-width:620px){.page-head h1{font-size:35px}.page-head p{font-size:14px}.culture-layout,.create-layout,.tryon-layout{display:block}.culture-layout>* ,.create-layout>* ,.tryon-layout>*{margin-bottom:12px}.culture-detail,.create-layout>.preview-panel,.tryon-layout>.compare-panel{grid-column:auto}.archive-grid{grid-template-columns:1fr}.culture-suggestions{grid-template-columns:repeat(3,1fr)}.suggestion-cta{grid-column:span 3}.weave-footer{grid-template-columns:1fr}.chapters{grid-template-columns:repeat(2,1fr)}.topbar{padding:0 12px}.global-search{width:48vw}.portrait-stage{min-height:450px}.archive-toolbar{justify-content:stretch}.archive-toolbar input{max-width:none}.modal{padding:20px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
.menu-button.icon-button{display:none}.ribbon-stack .crop{height:55px;aspect-ratio:auto}.grid-cell .crop{aspect-ratio:146/177}.motif-picker .crop{aspect-ratio:146/177}.tryon-motifs .crop{aspect-ratio:146/177}
@media(max-width:820px){.menu-button.icon-button{display:grid}}
.photo-fill{display:block;width:100%;height:100%;object-fit:cover}.archive-feature>.photo-fill{min-height:340px}.archive-card .photo-fill{height:160px}.archive-card .crop{height:auto;aspect-ratio:var(--ratio)}.hall>.photo-fill,.weave-scene>.photo-fill{position:absolute;inset:0}.chapter-image{height:74px;overflow:hidden}.chapter-image .photo-fill,.chapter-image .crop{height:100%;aspect-ratio:auto}.modal .photo-fill{height:250px;border-radius:9px}.culture-image .crop{height:auto;aspect-ratio:402/428}.weave-scene>.photo-fill{filter:brightness(.86)}
.saved-design-list{display:grid;gap:10px;max-height:55vh;overflow:auto;margin-top:18px}.saved-design-row{display:flex;align-items:center;gap:10px;padding:10px;border:1px solid var(--line);border-radius:9px;background:#fffaf2}.saved-design-row span{min-width:0;flex:1;display:grid}.saved-design-row strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.saved-design-row small{font-size:12px;color:var(--muted)}.saved-design-row .button{min-width:70px}.preview-panel>.grid-actions .button{min-width:0}@media(max-width:620px){.saved-design-row{flex-wrap:wrap}.saved-design-row span{flex-basis:100%}}
.wearable{display:flex;overflow:hidden}.wearable span{flex:1;min-width:0;position:relative;border-right:1px solid #e8cda3}.wearable span:after{content:"";position:absolute;left:25%;top:26%;width:50%;height:48%;border:1px solid #edd6aa;transform:rotate(45deg)}

/* Revised first-person weaving workshop: step guidance stays readable beside the scene. */
.weave-layout{grid-template-columns:minmax(0,1.8fr) minmax(320px,1fr);align-items:stretch}
.weave-scene{min-height:560px}
.weave-scene>.photo-fill{object-position:center center;filter:brightness(.82)}
.weave-scene .overlay-label{max-width:165px;padding:8px 11px;line-height:1.35;border:1px solid #ffffff45;background:#14202bdb}
.weave-scene .overlay-label.foot{right:7%;top:9%}
.weave-scene .overlay-label.warp{left:8%;top:30%}
.weave-scene .overlay-label.waist{right:10%;bottom:25%}
.weave-scene .interactive-threads{top:40%;left:36%;width:28%;height:26%;gap:0}
.weave-scene .thread{flex:1;min-width:0;height:100%;border:0;padding:0;background:transparent;box-shadow:none;position:relative}
.weave-scene .thread:after{content:"";position:absolute;top:0;bottom:0;left:calc(50% - 1px);width:2px;background:#fff8;box-shadow:0 0 4px #fff8}
.weave-scene .thread.selected{transform:translateY(-5px)}
.weave-scene .thread.selected:after{background:#ffe2a0;box-shadow:0 0 9px #fff0b0;width:4px}
.weave-progress{position:absolute;z-index:5;right:16px;bottom:17px;width:150px;padding:8px 10px;background:#14202be8;color:#fff;border-radius:7px;font-size:11px}
.weave-progress i{display:block;height:5px;margin-top:5px;border-radius:5px;background:#ffffff55;overflow:hidden}
.weave-progress b{display:block;width:var(--progress);height:100%;background:#e9b56b;transition:width .25s}
.weave-scene .scene-controls{bottom:15px;left:16px;right:16px;flex-wrap:wrap}
.scene-controls button{min-height:44px;padding:8px 14px;background:#14202be8}
.scene-controls .scene-cta{background:var(--red);border-color:var(--red);font-weight:700}
.weave-guide{padding:18px;display:flex;flex-direction:column;gap:8px}
.weave-guide .section-title{justify-content:space-between;margin-bottom:3px}
.weave-guide .section-title .small{margin-left:auto}
.weave-step{min-height:62px;gap:12px;padding:7px 9px}
.weave-step b{width:34px;height:34px}
.weave-step span{display:block;min-width:0}
.weave-step strong{display:block;font-size:14px;line-height:1.4}
.weave-step small{display:block;font-size:11px;color:var(--muted);line-height:1.4;margin-top:2px}
.weave-step.active small{color:#694d49}
.weave-controls{margin-top:auto;padding:13px}
.weave-controls .badge{margin-left:8px}
.weave-actions{display:flex;flex-wrap:wrap;gap:7px;margin-top:11px}
.weave-actions .button{margin:0}
.weave-footer .panel{min-height:145px}
.weave-footer .mini-diagram{margin:9px 0 6px}
.weave-action-list{display:flex;flex-wrap:wrap;gap:7px;margin:12px 0}
.weave-action-list span{background:#f1e6d8;color:#78453c;border-radius:6px;padding:7px 9px;font-size:12px;font-weight:700}
@media(max-width:1100px){.weave-layout{grid-template-columns:1fr}.weave-scene{min-height:500px}.weave-guide{display:block}.weave-steps{grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}.weave-controls{margin-top:12px}}
@media(max-width:620px){.weave-scene{min-height:390px}.weave-scene .overlay-label{font-size:10px;max-width:100px;padding:5px 7px}.weave-scene .overlay-label.warp{left:3%;top:27%}.weave-scene .overlay-label.foot{right:3%;top:6%}.weave-scene .overlay-label.waist{right:2%;bottom:31%}.weave-scene .scene-controls{left:8px;right:8px;bottom:8px;gap:5px}.scene-controls button{font-size:12px;padding:7px 9px}.weave-progress{right:8px;bottom:63px}.weave-steps{grid-template-columns:1fr}.weave-step{min-height:55px}.weave-footer{grid-template-columns:1fr}}

/* Source-repository motif photos in the nine-grid editor. */
.motif-photo{display:block;width:100%;height:100%;max-width:100%;object-fit:cover}
.preset-patterns{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));height:158px;gap:2px;overflow:hidden;border-radius:5px}
.preset-patterns .motif-photo{min-width:0}
.selected-motif-preview{display:flex;align-items:center;gap:10px;margin-top:11px;padding:7px;border:1px solid #dfd1c1;border-radius:8px;background:#fffbf5}
.selected-motif-preview .motif-photo{width:70px;height:70px;flex:none;border-radius:5px}
.selected-motif-preview strong,.selected-motif-preview span{display:block}
.selected-motif-preview span{font-size:12px;color:var(--muted);margin-top:4px}
.motif-picker{grid-template-columns:repeat(4,minmax(0,1fr));max-height:330px;overflow-y:auto;overscroll-behavior:contain;padding:3px 5px 3px 2px;align-content:start}
.motif-picker button{position:relative;aspect-ratio:1;overflow:hidden;min-width:0;min-height:0}
.motif-picker .motif-photo{border-radius:5px}
.motif-picker .motif-id{position:absolute;right:3px;bottom:3px;border-radius:3px;background:#13283bd9;color:#fff;padding:1px 4px;font-size:10px;line-height:1.25}
.grid-cell .motif-photo{position:absolute;inset:0}
.ribbon-stack .motif-tile{height:55px;overflow:hidden;background:#f4e5d0}
.ribbon-stack .motif-photo{object-position:center}
.tryon-motifs button{aspect-ratio:1;overflow:hidden}
.tryon-motifs .motif-photo{border-radius:4px}
.wearable span img{display:block;width:100%;height:100%;object-fit:cover}
.wearable span:has(img):after{display:none}
@media(max-width:620px){.motif-picker{grid-template-columns:repeat(4,minmax(0,1fr));max-height:310px}.preset-patterns{height:140px}}

/* Keep every editor tile square and repeat the 3 × 3 unit down a long band. */
.grid-nine{grid-template-columns:repeat(3,minmax(0,1fr))}
.grid-cell{aspect-ratio:1;min-width:0;min-height:0}
.grid-cell .motif-photo{width:100%;height:100%;object-fit:cover}
.preview-ribbon{position:relative;min-height:930px;padding:24px;flex-direction:column;gap:18px}
.ribbon-stack{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:min(calc(100% - 12px),174px);flex:none;border:6px double #e7b56f;border-radius:5px;transform:none;overflow:hidden;line-height:0;box-shadow:0 14px 28px #0005}
.ribbon-stack .motif-tile{aspect-ratio:1;height:auto;min-width:0;min-height:0}
.ribbon-stack .motif-photo{width:100%;height:100%;object-fit:cover;transform:none}
.ribbon-preview-note{color:#fff7eb;background:#172f42d9;border-radius:99px;padding:5px 12px;font-size:12px;line-height:1.5;letter-spacing:.04em;text-align:center}

/* Keep the research basis visible without crowding the first-person scene. */
.weave-source-note{margin:0 0 5px;padding:9px 11px;border-left:3px solid var(--red);background:#f7efe5;border-radius:0 6px 6px 0;line-height:1.6}
.weave-step small{font-size:12px;line-height:1.45}
.weave-controls [data-weave-action]{min-height:44px}
.weave-concept-badge{position:absolute;z-index:4;top:15px;left:15px;padding:6px 10px;color:#fff;background:#14202bdc;border:1px solid #ffffff50;border-radius:6px;font-size:11px;letter-spacing:.03em}
@media(max-width:620px){.weave-concept-badge{top:8px;left:8px;padding:4px 6px;font-size:10px}}

/* First-person workshop: photo-backed, keyboard-operable teaching overlay. */
.weave-scene .overlay-label{pointer-events:none}
.weave-art{position:absolute;z-index:2;inset:14% 0 15%;pointer-events:none;opacity:0;transition:opacity .35s}
.weave-art.ready{opacity:1}
.warp-lines{position:absolute;left:50%;top:7%;height:78%;width:var(--warp-width);transform:translateX(-50%) perspective(340px) rotateX(9deg);display:flex;justify-content:space-between;gap:1px;filter:drop-shadow(0 2px 2px #16202bd9)}
.warp-line{height:100%;flex:1;min-width:1px;max-width:5px;background:linear-gradient(90deg,#fff6,var(--yarn) 42%,#231d1c88);border-radius:2px;opacity:.92}
.heddle-rod,.fixed-rod{position:absolute;left:31%;width:38%;height:9px;border-radius:12px;background:linear-gradient(#e6c297,#83512e 60%,#3f261e);border:1px solid #f4d1a1;box-shadow:0 3px 9px #1a1215b9;transform:rotate(-1deg)}
.fixed-rod{top:13%;height:12px;transform:rotate(1deg)}
.digital-band{position:absolute;left:50%;bottom:13%;width:16%;height:calc(var(--rounds) * 26px);max-height:53%;transform:translateX(-50%);display:flex;flex-direction:column-reverse;overflow:hidden;border:3px ridge #ecc885;box-shadow:0 4px 14px #0009;background:#193d57}
.digital-band img{display:block;width:100%;height:26px;object-fit:cover;flex:none}
.digital-band.complete{height:52%}.digital-band.complete img{flex:1;min-height:0}
.shuttle-pass{position:absolute;z-index:2;left:33%;top:52%;width:34%;height:8px;border-radius:40%;background:linear-gradient(90deg,#ad7139,#f1d1a0 40%,#905323);box-shadow:0 0 0 2px #f6daa9,0 3px 10px #130e0b}
.scene-hotspots{position:absolute;z-index:5;inset:0;pointer-events:none}
.scene-hotspot{position:absolute;z-index:5;min-height:42px;max-width:170px;padding:7px 10px;border:1px solid #f2d09e;border-radius:8px;background:#102940ec;color:white;font-size:12px;font-weight:700;line-height:1.25;text-align:left;box-shadow:0 5px 18px #0006}
.scene-hotspot:hover:not(:disabled),.scene-hotspot:focus-visible{background:#a44639}
.scene-hotspot.done{background:#1f674feb;border-color:#a6ddbd}
.scene-hotspots .scene-hotspot{pointer-events:auto}
.scene-hotspot.tool-0{right:7%;top:20%}.scene-hotspot.tool-1{right:4%;top:48%}.scene-hotspot.tool-2{left:6%;top:57%}
.scene-hotspot.warp-action,.scene-hotspot.rod-action{left:50%;top:20%;transform:translateX(-50%);max-width:none;white-space:nowrap}
.weave-tool-choices{display:grid;gap:7px;margin:10px 0}
.weave-tool-choice{display:flex;align-items:center;gap:10px;width:100%;min-height:44px;padding:6px 10px;border:1px solid #dfc6ac;border-radius:8px;background:#fffaf2;color:var(--ink);text-align:left}
.weave-tool-choice b{display:grid;place-items:center;flex:none;width:27px;height:27px;border-radius:50%;background:#e8d9c5;color:#794c36}
.weave-tool-choice.done{border-color:#8bbca2;background:#edf6ef}.weave-tool-choice.done b{background:#2c7456;color:#fff}
.weave-tool-choice:hover{border-color:var(--red)}
.weave-scene .interactive-threads{z-index:5;top:39%;height:25%}
.weave-scene .thread{min-width:9px;border-radius:8px;background:#ffffff12}
.weave-scene .thread:focus-visible{outline:2px solid #f9ce72;outline-offset:0}
@media(max-width:620px){.scene-hotspot{font-size:10px;max-width:115px;min-height:38px;padding:5px 7px}.scene-hotspot.tool-0{right:3%;top:17%}.scene-hotspot.tool-1{right:2%;top:45%}.scene-hotspot.tool-2{left:3%;top:58%}.scene-hotspot.warp-action,.scene-hotspot.rod-action{top:20%;max-width:175px;white-space:normal}.digital-band{width:20%}.weave-scene .thread{min-width:4px}}

/* The digital gallery uses the full content width after removing AR guidance. */
.exhibit-layout .hall{height:clamp(510px,52vw,760px)}
@media(max-width:620px){.exhibit-layout .hall{height:380px;min-height:0}.hall-caption{right:12px;left:12px;bottom:12px}.chapters{gap:6px}}
.hall .gallery-tools-photo,.chapter-image .gallery-tools-photo{object-position:58% center}
.hall .gallery-story-photo,.chapter-image .gallery-story-photo{object-position:86% center}

/* Editable Blender set rendered in real time: the scene, not a photo, is primary. */
.weave-layout{grid-template-columns:minmax(0,2fr) minmax(330px,.92fr);gap:14px;align-items:stretch}
.workshop-scene{height:clamp(620px,69vh,830px);min-height:620px;background:#241a17;isolation:isolate}
.weave-stage{position:absolute;inset:0;overflow:hidden;background:radial-gradient(circle at 50% 45%,#60402b,#211b1a 72%)}
.weave-stage canvas{display:block;touch-action:none;cursor:grab}
.weave-stage canvas:active{cursor:grabbing}
.weave-loading{position:absolute;inset:0;z-index:8;display:grid;place-content:center;justify-items:center;gap:16px;padding:30px;text-align:center;color:#f7e5c5;background:radial-gradient(ellipse at 50% 38%,#2c4754,#142b39 65%,#102330);pointer-events:auto}
.weave-loading strong{font:700 clamp(20px,2vw,27px) "Noto Serif CJK SC","Songti SC",serif;letter-spacing:.08em}
.weave-loading-detail{max-width:360px;margin:0;color:#cbb99e;line-height:1.7;font-size:14px}
.weave-loading-emblem{width:58px;height:58px;margin-bottom:8px;border:2px solid #e9c17b35;border-top-color:#e9c17b;border-right-color:#e9c17b;border-radius:50%;animation:workshop-loading-turn 1.8s linear infinite}
.weave-loading button{min-height:44px;padding:9px 18px;border:1px solid #e9c17b;border-radius:8px;background:#9e4539;color:#fff4dd;font-weight:700}
.weave-loading button[hidden]{display:none}
@keyframes workshop-loading-turn{to{transform:rotate(360deg)}}
.weave-stage:not([data-ready="true"]) canvas,.weave-stage:not([data-ready="true"]) .workshop-marker-layer,.weave-stage:not([data-ready="true"]) .workshop-tool-halo{visibility:hidden;pointer-events:none}
.weave-stage[data-ready="true"] .weave-loading{display:none}
.weave-stage[data-error] .weave-loading-emblem{animation:none;border-color:#c5836b}
.workshop-topline{position:absolute;z-index:2;left:18px;top:16px;display:flex;align-items:center;gap:9px;padding:8px 12px;background:#152b37e8;border:1px solid #d6ac74a8;border-radius:99px;color:#fff5e4;font-size:12px;letter-spacing:.03em;pointer-events:none}
.workshop-live-dot{width:8px;height:8px;border-radius:50%;background:#75d09a;box-shadow:0 0 10px #75d09a}
.workshop-caption{color:#ebc58f;border-left:1px solid #ffffff50;padding-left:10px}
.workshop-instruction{position:absolute;z-index:2;top:66px;left:18px;width:min(225px,36%);padding:10px 12px;background:#152b37d9;border:1px solid #e1c29a68;border-radius:10px;color:#fff7eb;pointer-events:none}
.workshop-instruction span,.workshop-instruction strong,.workshop-instruction small{display:block}
.workshop-instruction span{font-size:11px;color:#e2b97c;letter-spacing:.12em}
.workshop-instruction strong{font:700 18px "Noto Serif CJK SC","Songti SC",serif;margin:4px 0}
.workshop-instruction small{display:none}
.workshop-instruction-next{display:grid;gap:3px;margin-top:7px;padding:7px 9px;border-left:3px solid #f2c278;border-radius:0 7px 7px 0;background:#f2c2781c}
.workshop-instruction-next b{font-size:11px;color:#f5c983;letter-spacing:.08em}
.workshop-instruction-next em{font-size:12px;font-style:normal;font-weight:700;line-height:1.42;color:#fffdf7}
.workshop-loop-caption{position:absolute;z-index:2;top:68px;right:15px;max-width:38%;padding:7px 10px;border:1px solid #e0bf8a9c;border-radius:7px;background:#142c38d9;color:#f8e0af;font-size:11px;line-height:1.4;pointer-events:none;text-align:right}
.workshop-action-caption{position:absolute;z-index:4;left:50%;bottom:76px;transform:translateX(-50%);max-width:min(70%,400px);padding:8px 16px;border:1px solid #e7bf84b8;border-radius:999px;background:#102837ed;color:#fff5e3;box-shadow:0 8px 24px #0007;font-size:13px;font-weight:700;line-height:1.4;text-align:center;pointer-events:none}
.workshop-action-caption[hidden]{display:none}
.weave-stage:not([data-motion="idle"]) .workshop-marker-layer{visibility:hidden;pointer-events:none}
.workshop-view-controls{position:absolute;z-index:3;left:16px;bottom:17px;display:flex;flex-wrap:wrap;gap:8px;max-width:calc(100% - 172px)}
.workshop-view-controls button{min-height:42px;padding:7px 13px;border-radius:8px;background:#122939e8;border:1px solid #e5c391a8;color:#fffaf0;font-weight:700}
.workshop-view-controls button:hover{background:#a54639}
.workshop-view-controls #scene-continue{background:#a64437;border-color:#c5816b}
.workshop-scene .weave-progress{z-index:3;width:135px;right:16px;bottom:17px}
.weave-thread-picks{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px;margin:12px 0}
.weave-thread-picks .thread{display:grid;place-items:center;width:100%;min-width:0;min-height:44px;border:1px solid #cdb69d;border-radius:6px;background:#fffaf0;color:#31465a;font-size:12px;box-shadow:none;transform:none}
.weave-thread-picks .thread.selected{border-color:#a64437;background:#a64437;color:white;box-shadow:none;transform:none}
.weave-thread-picks .thread:hover:not(:disabled){border-color:#a64437}
.weave-footer .panel{min-height:105px}
@media(max-width:1100px){.weave-layout{grid-template-columns:1fr}.workshop-scene{height:590px;min-height:590px}}
@media(max-width:850px){.workshop-instruction{left:9px;right:9px;top:47px;width:auto;max-width:none;display:grid;grid-template-columns:minmax(125px,.9fr) minmax(0,1.5fr);align-items:center;gap:2px 9px;padding:7px 9px}.workshop-instruction>span,.workshop-instruction>strong{grid-column:1}.workshop-instruction>strong{margin:0;font-size:17px}.workshop-instruction>small{display:none}.workshop-instruction-next{grid-column:2;grid-row:1/3;margin:0;padding:5px 8px}.workshop-instruction-next em{font-size:12px}.workshop-loop-caption{top:auto;bottom:115px;right:8px;max-width:55%}}
@media(max-width:620px){.workshop-scene{height:67vh;min-height:440px;max-height:640px}.workshop-topline{left:9px;top:9px;padding:6px 8px;font-size:10px}.workshop-caption{display:none}.workshop-instruction{left:9px;right:9px;top:47px;max-width:none;grid-template-columns:minmax(105px,.85fr) minmax(0,1.5fr);padding:7px 8px}.workshop-instruction strong{font-size:15px}.workshop-instruction small{display:none}.workshop-instruction-next{margin:0;padding:5px 7px}.workshop-instruction-next b{font-size:10px}.workshop-instruction-next em{font-size:11px}.workshop-view-controls{left:8px;right:8px;bottom:9px;max-width:none;gap:8px}.workshop-view-controls button{min-height:44px;padding:6px 8px;font-size:11px}.workshop-scene .weave-progress{right:8px;bottom:60px;width:112px}.weave-thread-picks{grid-template-columns:repeat(6,minmax(0,1fr))}}
@media(max-width:620px){.workshop-action-caption{bottom:112px;max-width:76%;padding:6px 11px;font-size:11px}}

/* Stage-anchored guidance keeps the instruction attached to the thing being used. */
.workshop-tool-halo{position:absolute;z-index:2;box-sizing:border-box;transform:translate(-50%,-50%);border:2px solid #ffe8a2;border-radius:50%;background:radial-gradient(ellipse at center,transparent 50%,#ffcc5a16 69%,#ffce673b 92%,#ffcf6b1c);box-shadow:0 0 10px 3px #ffcf6b9c,0 0 28px 9px #ffb93f4d,inset 0 0 14px 4px #ffd66c4d;pointer-events:none;animation:workshop-tool-halo-breathe 2.4s ease-in-out infinite}
.workshop-tool-halo::after{content:"";position:absolute;inset:-7px;border:1px solid #ffe9ac66;border-radius:50%;pointer-events:none}
.workshop-tool-halo[hidden]{display:none}
@keyframes workshop-tool-halo-breathe{0%,100%{opacity:.68}50%{opacity:1}}
@media(prefers-reduced-motion:reduce){.workshop-tool-halo{animation:none;opacity:1}}
.workshop-marker-layer{position:absolute;inset:0;z-index:3;pointer-events:none}
.workshop-marker{position:absolute;display:flex;align-items:center;gap:7px;transform:translate(-50%,-50%);width:max-content;min-width:90px;min-height:42px;max-width:200px;padding:5px 10px 5px 7px;border:1px solid #e8d0a8bf;border-radius:999px;background:#152b37c9;color:#fff7e9;box-shadow:0 6px 18px #0007;font-size:12px;font-weight:700;line-height:1.3;white-space:nowrap;cursor:pointer;pointer-events:auto;backdrop-filter:blur(5px);transition:background .2s,box-shadow .2s,scale .2s}
.workshop-marker[hidden]{display:none}
.workshop-marker:hover{background:#833c31e8;box-shadow:0 8px 22px #0009;scale:1.035}
.workshop-marker:focus-visible{outline:3px solid #ffe1a1;outline-offset:4px}
.workshop-marker-ring{display:block;flex:none;width:20px;height:20px;border:2px solid #f1d296;border-radius:50%;background:radial-gradient(circle,#f4d99a 0 24%,#9f4535 30% 60%,transparent 65%);box-shadow:0 0 0 3px #ffdca727}
.workshop-marker:hover .workshop-marker-ring,.workshop-marker:focus-visible .workshop-marker-ring{box-shadow:0 0 0 5px #ffdca74d}
.workshop-marker-label{overflow:hidden;text-overflow:ellipsis}
.workshop-waist-marker{min-width:0;min-height:34px;max-width:none;padding:5px 10px;border-color:#f0c485;background:#572d27ed;color:#fff3d7;font-size:12px;pointer-events:none;cursor:default}
.workshop-waist-marker::before{content:"";position:absolute;left:calc(100% + 3px);top:50%;width:95px;border-top:1px solid #f0c485;transform:rotate(-8deg);transform-origin:left center}
.weave-guide .weave-steps{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin:4px 0 8px}
.weave-guide .weave-step{min-height:51px;padding:6px 8px;border:1px solid #e8ddd0;background:#fffdfa;gap:7px}
.weave-guide .weave-step.active{border-color:#bc6b56;background:#fcf0e7}
.weave-guide .weave-step b{width:27px;height:27px;font-size:11px}
.weave-guide .weave-step strong{font-size:12px}
.weave-guide .weave-controls{margin-top:0;flex:1;padding:15px;background:linear-gradient(150deg,#f9f4ec,#f1e5d4);border:1px solid #e3d0b7}
.workshop-card-eyebrow{display:block;margin-bottom:6px;font-size:11px;color:#9c4c3a;font-weight:800;letter-spacing:.12em}
.weave-source-disclosure{border-top:1px solid #eadfd1;padding:8px 3px 0;color:#6f6255;font-size:12px}
.weave-source-disclosure summary{cursor:pointer;font-weight:700}
.weave-source-disclosure p{line-height:1.55;margin:8px 0 2px}
.workshop-story-image{display:block;width:100%;height:auto;max-height:250px;object-fit:contain;margin-top:9px;border:1px solid #e9d8c5;border-radius:7px;background:#efe7db}
@media(max-width:620px){.workshop-loop-caption{top:auto;right:8px;bottom:115px;max-width:60%;font-size:10px}.workshop-story-image{max-height:220px}}
@media(max-width:620px){.workshop-marker{max-width:145px;min-height:44px;padding:4px 7px 4px 5px;font-size:10px;white-space:normal}.workshop-marker-ring{width:24px;height:24px}.weave-guide .weave-steps{grid-template-columns:repeat(2,minmax(0,1fr))}.weave-guide .weave-step{min-height:49px}}
@media(max-width:620px){.workshop-waist-marker{max-width:118px;min-height:30px;white-space:normal;font-size:10px}.workshop-waist-marker::before{width:65px}}
@media(prefers-reduced-motion:reduce){.workshop-marker-ring{animation:none}.workshop-marker{transition:none}}
.tripo-preview-button{margin-top:7px;min-height:44px}
#modal:has(#tripo-preview-canvas){max-width:min(950px,94vw);max-height:92vh;overflow:auto}
.tripo-preview-stage{height:min(58vh,560px);min-height:340px;margin:12px 0;border:1px solid #d4c2ad;border-radius:12px;overflow:hidden;background:#2b3038}
.tripo-preview-stage canvas{display:block;width:100%;height:100%;touch-action:none;outline-offset:-4px}
@media(max-width:620px){.tripo-preview-stage{height:47vh;min-height:300px}}
.workshop-process-diagram{display:block;width:100%;height:auto;margin-top:16px;border:1px solid #dccbb7;border-radius:12px;background:#faf6ed}
.weave-swatches button{position:relative;min-width:33px;flex:none}
.weave-swatches button.active::after{content:"✓";position:absolute;inset:0;display:grid;place-items:center;color:#fff;text-shadow:0 1px 2px #17202b,0 0 4px #17202b;font-size:18px;font-weight:700}

/* The scene always exposes its current action, including step transitions. */
.workshop-view-controls{left:16px;right:16px;max-width:none;display:grid;grid-template-columns:repeat(3,max-content) minmax(170px,1fr);align-items:stretch}
.workshop-view-controls button{min-height:48px;line-height:1.4}
.workshop-view-controls #scene-continue{white-space:normal;text-align:center;font-size:13px;padding:8px 14px;border-color:#e5aa76;box-shadow:0 3px 16px #0005}
.workshop-view-controls button:disabled{cursor:wait;color:#d2c6b6;background:#384047;border-color:#8d897c;box-shadow:none}
.workshop-view-controls button:focus-visible,.workshop-thread-tray button:focus-visible,.workshop-thread-tray input:focus-visible,.weave-loading button:focus-visible{outline:3px solid #ffe1a1;outline-offset:3px}
.workshop-scene .weave-progress{bottom:82px}
.workshop-action-caption{bottom:132px}
.workshop-marker{max-width:245px;min-height:44px;white-space:normal}
.workshop-marker-label{overflow:visible;text-overflow:clip}
.workshop-marker-continue{border:2px solid #edc67e;background:#173b40f2;box-shadow:0 0 18px #e7bd6f3d,0 6px 18px #0007}
.workshop-marker[data-offscreen="true"]{border-style:dashed}
.workshop-thread-tray{position:absolute;z-index:4;right:16px;bottom:124px;width:min(345px,calc(100% - 32px));box-sizing:border-box;padding:12px;border:1px solid #dbb984;border-radius:12px;background:#142c3bf5;color:#fff1d9;box-shadow:0 8px 25px #0006}
.workshop-thread-title{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 8px}
.workshop-thread-title strong{font-size:14px}.workshop-thread-title span{font-size:11px;color:#d9c3a0}
.workshop-thread-tray .weave-swatches{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:7px;margin:12px 0}
.workshop-thread-tray .weave-swatches button{width:100%;min-width:0;height:32px;border-color:#f8e7c9;cursor:pointer}
.workshop-thread-tray .weave-swatches button.active{box-shadow:0 0 0 2px #e5b760}
.workshop-thread-tray label{display:flex;align-items:center;flex-wrap:wrap;gap:7px;font-size:12px}
.workshop-thread-tray label strong{color:#f1cd8a;min-width:18px}
.workshop-thread-tray input{width:auto;min-width:100px;flex:1;accent-color:#c77356}
.workshop-scene:has(.workshop-thread-tray) .weave-progress{display:none}
@media(max-width:620px){
  .workshop-view-controls{left:10px;right:10px;bottom:10px;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}
  .workshop-view-controls #scene-continue{grid-column:1/-1;font-size:12px;min-height:46px}
  .workshop-view-controls button{min-height:42px;padding:6px;font-size:11px}
  .workshop-scene .weave-progress{bottom:121px;right:10px}
  .workshop-action-caption{bottom:163px;max-width:80%}
  .workshop-thread-tray{left:10px;right:10px;bottom:121px;width:auto;padding:10px}
  .workshop-thread-tray .weave-swatches{gap:6px;margin:10px 0}
  .workshop-thread-tray .weave-swatches button{height:30px}
  .workshop-marker{max-width:190px;font-size:11px}
  .workshop-loop-caption{display:none}
}
@media(prefers-reduced-motion:reduce){.weave-loading-emblem{animation:none;border-color:#e9c17b}}
.weave-controls [data-weave-action]:disabled{opacity:.65;cursor:not-allowed}
/* Literature catalogue: preserve source crops, no inferred image-to-name mapping. */
.literature-image{padding:22px;align-self:start}.pattern-enlarge{display:block;width:100%;padding:24px 10px;background:#f2ecdf;border:0;border-radius:8px;margin:18px 0;cursor:zoom-in}.pattern-enlarge img{display:block;width:100%;height:230px;object-fit:contain}.literature-image figcaption{line-height:1.8}.literature-image figcaption strong{font-size:22px}.literature-image small{display:block;color:#605b52}.literature-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:12px;margin-bottom:20px}.literature-card{background:#fffaf1;border:1px solid #d6c6af;border-radius:9px;padding:12px;min-width:0;cursor:pointer;color:#193f54;text-align:left}.literature-card img{display:block;width:100%;height:90px;object-fit:contain;background:#eee9df;margin-bottom:10px}.literature-card span{display:block;font-size:14px}.literature-card.active{outline:3px solid #a33f38;outline-offset:1px}.literature-card:hover{background:#f1e5d0}.literature-sources{margin:24px 0;line-height:1.9;overflow-wrap:anywhere}.literature-sources summary{cursor:pointer;min-height:44px;padding:10px 0}.literature-zoom{width:100%;max-height:55vh;object-fit:contain}.culture-copy{overflow-wrap:anywhere;line-height:1.9}.literature-card:focus-visible,.pattern-enlarge:focus-visible{outline:3px solid #a33f38;outline-offset:4px}@media(max-width:1100px){.literature-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(max-width:600px){.literature-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.pattern-enlarge img{height:190px}.literature-image{padding:16px}}

/* Personal account: same parchment, indigo and cinnabar language as the platform. */
.account-button{display:inline-flex;align-items:center;gap:8px;min-height:44px;max-width:176px;padding:5px 10px;border:1px solid #cdb69d;border-radius:999px;background:#fffaf1;color:#193f54;font-weight:800;line-height:1;white-space:nowrap}.account-button:hover,.account-button:focus-visible{border-color:#a33f38;background:#fff3e5}.account-button:focus-visible{outline:3px solid #d4a052;outline-offset:3px}.account-button.signed-in{border-color:#a33f38}.user-mark{display:grid;place-items:center;width:30px;height:30px;flex:0 0 30px;border-radius:50%;background:#193f54;color:#fff7e9;font-size:14px}.signed-in .user-mark{background:#a33f38}.account-label{overflow:hidden;text-overflow:ellipsis}.account-dialog{max-width:540px;padding:4px}.account-dialog h2{margin:2px 0 8px;color:#193f54}.account-eyebrow{margin:0 0 7px;color:#a33f38;font-size:12px;font-weight:800;letter-spacing:.12em}.account-intro{margin:0 0 16px;color:#62594f;line-height:1.7}.account-tabs{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:14px 0}.account-tabs button{min-height:44px;border:1px solid #d7c4ab;border-radius:8px;background:#f8f1e7;color:#193f54;font-weight:800}.account-tabs button.active{border-color:#a33f38;background:#a33f38;color:white}.account-dialog .field{display:grid;gap:7px;margin:13px 0;color:#193f54;font-weight:800}.account-dialog input{min-height:44px;box-sizing:border-box;width:100%;border:1px solid #cdb69d;border-radius:7px;background:#fffdf8;padding:8px 10px;color:#1d3546;font:inherit}.account-dialog input:focus-visible{outline:3px solid #d4a052;outline-offset:2px;border-color:#a33f38}.account-error{min-height:1.4em;margin:10px 0;color:#9d332d;font-weight:700}.account-submit{width:100%;min-height:46px}.account-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin:18px 0}.account-summary span{display:grid;gap:4px;padding:12px;border:1px solid #e0c6a8;border-radius:8px;background:#f8efe2;color:#62594f;text-align:center}.account-summary b{color:#a33f38;font-size:23px}.account-section{margin:22px 0}.account-section h3{margin:0 0 10px;color:#193f54}.tryon-history-list{display:grid;gap:8px}.tryon-history-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:8px;padding:10px;border:1px solid #dfcfbb;border-radius:8px;background:#fffdf8}.tryon-history-row span,.saved-design-row span{min-width:0}.tryon-history-row strong,.tryon-history-row small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tryon-history-row small{margin-top:4px;color:#756b5f;font-size:12px}.account-logout{min-height:44px;margin-top:2px}.tryon-result-dialog img{display:block;width:100%;max-height:65vh;object-fit:contain;border:1px solid #dbc5aa;border-radius:8px;background:#f3eadc}.account-dialog .button:focus-visible,.account-tabs button:focus-visible{outline:3px solid #d4a052;outline-offset:3px}@media(max-width:720px){.topbar-kicker{display:none}.topbar-right{margin-left:auto}.global-search{display:none}.account-button{min-width:44px;padding:5px}.account-label{display:none}.account-dialog{padding:0}.tryon-history-row{grid-template-columns:minmax(0,1fr) auto auto}.tryon-history-row .button,.saved-design-row .button{min-height:44px;padding:6px 9px;font-size:12px}}@media(max-width:390px){.tryon-history-row{grid-template-columns:1fr 1fr}.tryon-history-row span{grid-column:1/-1}.tryon-history-row .button{width:100%}}
/* Decorative title seals are retired: every main route uses the same text-only page header. */
.seal{display:none!important}

/* Sidebar landscape keeps the navigation calm while echoing the exhibition's mountain-and-river language. */
.sidebar{isolation:isolate}.sidebar:after{inset:auto 0 0;height:380px;border:0;border-radius:0;box-shadow:none;background:url("./assets/sidebar-landscape-generated.png?v=20261018-mature6") center bottom/cover no-repeat;opacity:.97;z-index:0}.brand,.sidebar nav{position:relative;z-index:1}.sidebar-foot{position:relative;z-index:1;margin:auto 16px 21px;padding:15px 4px 0;color:#e2c58e;font-family:"Noto Serif CJK SC","Songti SC",serif;font-size:12px;letter-spacing:.18em;line-height:2;text-align:center;text-shadow:0 1px 10px #071724}.sidebar-foot:before{content:"";display:block;width:42px;height:1px;margin:0 auto 10px;background:linear-gradient(90deg,transparent,#d5b06f,transparent)}.sidebar-foot span{display:block;white-space:nowrap}@media(max-height:760px){.sidebar:after{height:260px}.sidebar-foot{margin-bottom:12px;font-size:11px}}

/* Match the first pixel of the generated landscape so the side image has no visible seam. */
.sidebar{background:#0c273a}.sidebar:after{opacity:1}
