:root {
  font-family:"Microsoft JhengHei","Noto Sans TC",system-ui,sans-serif;
  color:#263e40;
  background:#f4f0e5;
  font-synthesis:none
}
* {
  box-sizing:border-box
}
body {
  margin:0
}
button,input,select {
  font:inherit
}
button,a,select {
  touch-action:manipulation
}
a {
  color:inherit;
  text-underline-offset:4px
}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible {
  outline:3px solid #cb8146;
  outline-offset:3px
}
.topbar {
  height:72px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  padding:0 max(24px,calc((100vw - 1280px)/2));
  border-bottom:1px solid #d3d5c8;
  background:#f9f6ed
}
.brand {
  display:flex;
  align-items:center;
  gap:12px;
  text-decoration:none;
  font-size:17px;
  font-weight:800;
  letter-spacing:.06em
}
.brand small {
  display:block;
  font-size:11px;
  font-weight:600;
  letter-spacing:.12em;
  color:#697b72
}
.brand-mark {
  display:grid;
  place-items:center;
  width:38px;
  height:38px;
  color:#f7f0db;
  background:#294d4b;
  font-size:25px;
  font-weight:400
}
.workbench {
  font-size:13px;
  color:#375d56;
  font-weight:700;
  text-decoration:none
}
.workbench span {
  font-size:18px
}
main {
  max-width:1280px;
  margin:auto;
  padding:0 24px
}
.intro {
  display:flex;
  justify-content:space-between;
  align-items:end;
  gap:36px;
  padding:38px 0 32px
}
.eyebrow {
  font-size:10px;
  letter-spacing:.19em;
  font-weight:800;
  color:#888f7a;
  margin:0 0 16px
}
.intro h1 {
  font-size:clamp(34px,4.1vw,48px);
  line-height:1.16;
  letter-spacing:-.035em;
  margin:0;
  color:#213d3c
}
.intro h1 span {
  color:#a36942
}
.intro-copy {
  max-width:510px;
  line-height:1.9;
  font-size:15px;
  color:#5b6d64;
  margin:12px 0 0
}
.summary {
  width:202px;
  flex:none;
  display:grid;
  gap:4px;
  border-left:3px solid #c99f64;
  padding:2px 0 2px 22px;
  color:#60746b;
  font-size:13px
}
.summary-label {
  font-size:11px;
  letter-spacing:.08em
}
.summary strong {
  font-size:42px;
  line-height:1.1;
  color:#244b45
}
.summary small {
  font-size:11px;
  line-height:1.6;
  margin-top:8px
}
.catalog {
  border-top:1px solid #cbd1c3;
  padding:30px 0 52px
}
.catalog-heading {
  display:flex;
  justify-content:space-between;
  align-items:end;
  gap:16px;
  margin-bottom:24px
}
.catalog-heading .eyebrow {
  margin-bottom:7px
}
.catalog h2 {
  margin:0;
  font-size:24px;
  letter-spacing:.02em
}
.catalog-heading>p,.results-bar p {
  margin:0;
  color:#728078;
  font-size:12px
}
.tools {
  display:flex;
  gap:12px
}
.tools label {
  display:grid;
  gap:7px;
  color:#5c7066;
  font-size:12px;
  font-weight:700
}
.search {
  flex:1
}
.status-filter {
  width:225px
}
input,select {
  width:100%;
  min-height:46px;
  padding:10px 13px;
  border:1px solid #c5d0bf;
  background:#fffdf6;
  color:#263e40;
  border-radius:3px
}
input::placeholder {
  color:#9ba99c
}
.groups {
  display:flex;
  gap:7px;
  overflow-x:auto;
  padding:18px 0 13px;
  scrollbar-width:thin
}
.group {
  white-space:nowrap;
  border:0;
  border-radius:3px;
  background:transparent;
  padding:9px 12px;
  color:#60736b;
  cursor:pointer;
  font-size:13px;
  font-weight:700
}
.group span {
  font-size:11px;
  opacity:.7;
  margin-left:5px
}
.group[aria-pressed=true] {
  background:#294f49;
  color:#fff8e8
}
.results-bar {
  display:flex;
  justify-content:space-between;
  gap:12px;
  border-top:1px solid #d6dbce;
  padding:16px 0
}
.results-bar p:first-child {
  font-weight:700;
  color:#415b51
}
.grid {
  display:grid;
  grid-template-columns:repeat(auto-fill,minmax(190px,1fr));
  gap:14px
}
.asset-card {
  min-width:0;
  padding:0;
  border:1px solid #d5dccf;
  background:#fcfaf2;
  text-align:left;
  color:inherit;
  cursor:pointer;
  border-radius:3px;
  overflow:hidden;
  transition:transform .15s ease,border-color .15s ease
}
.asset-card:hover {
  transform:translateY(-2px);
  border-color:#719287
}
.preview {
  height:146px;
  display:grid;
  place-items:center;
  background-color:#e3eadf;
  background-image:linear-gradient(45deg,#dbe4d7 25%,transparent 25%),linear-gradient(-45deg,#dbe4d7 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#dbe4d7 75%),linear-gradient(-45deg,transparent 75%,#dbe4d7 75%);
  background-size:24px 24px;
  background-position:0 0,0 12px,12px -12px,-12px 0
}
.preview canvas,.detail-picture canvas {
  display:block;
  max-width:88%;
  max-height:90%;
  height:auto;
  image-rendering:pixelated
}
.card-copy {
  min-height:103px;
  padding:14px 14px 15px;
  display:flex;
  flex-direction:column;
  gap:6px
}
.card-family {
  font-size:10px;
  letter-spacing:.06em;
  color:#829286
}
.card-name {
  font-size:15px;
  font-weight:800;
  line-height:1.35;
  overflow-wrap:anywhere
}
.card-status {
  font-size:11px;
  color:#77867c;
  line-height:1.4
}
.warning,.empty {
  padding:16px;
  background:#f6e7cb;
  color:#76502f;
  line-height:1.6
}
.empty {
  text-align:center
}
.warning[hidden],.empty[hidden],[hidden] {
  display:none!important
}
footer {
  border-top:1px solid #cbd1c3;
  padding:25px 0 42px;
  color:#718078;
  font-size:12px;
  line-height:1.8
}
dialog {
  width:min(860px,calc(100vw - 32px));
  max-height:calc(100dvh - 32px);
  border:0;
  border-radius:5px;
  padding:0;
  background:#f8f5e9;
  color:#263e40;
  box-shadow:0 20px 90px #182b2cb0;
  overflow:auto
}
dialog::backdrop {
  background:#132b2db8
}
.dialog-header {
  display:flex;
  justify-content:space-between;
  align-items:center;
  padding:20px 24px;
  border-bottom:1px solid #d6ddcf
}
.dialog-header .eyebrow {
  margin:0
}
.dialog-header button {
  width:36px;
  height:36px;
  border:0;
  background:#e6eadf;
  color:#35534d;
  font-size:19px;
  cursor:pointer
}
.detail-layout {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:28px;
  padding:26px
}
.detail-picture {
  min-height:290px;
  background:#e1e9dc;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:12px;
  overflow:hidden
}
.detail-picture canvas {
  max-height:250px
}
.detail-picture p {
  font-size:11px;
  color:#718278;
  margin:0;
  text-align:center
}
.detail-group {
  font-size:11px;
  color:#9b6b45;
  letter-spacing:.06em
}
.detail-copy h2 {
  font-size:25px;
  margin:4px 0 6px
}
.detail-id {
  font-size:12px;
  color:#788a80;
  overflow-wrap:anywhere
}
.frame-control {
  display:grid;
  gap:7px;
  font-size:12px;
  margin:18px 0
}
.detail-copy dl {
  margin:16px 0;
  display:grid;
  gap:11px
}
.detail-copy dl div {
  display:grid;
  grid-template-columns:76px 1fr;
  gap:10px;
  font-size:12px;
  line-height:1.5
}
.detail-copy dt {
  color:#829087
}
.detail-copy dd {
  margin:0;
  overflow-wrap:anywhere
}
.rights {
  font-size:11px;
  line-height:1.7;
  color:#728279
}
.detail-links {
  display:flex;
  flex-wrap:wrap;
  gap:14px;
  font-size:12px;
  font-weight:700;
  color:#286a5a
}
.asset-card[hidden] {
  display:none
}
@media(max-width:650px) {
  .topbar {
    height:62px;
    padding:0 16px
  }
  .brand {
    font-size:14px
  }
  .brand-mark {
    width:34px;
    height:34px
  }
  .workbench {
    font-size:11px
  }
  main {
    padding:0 16px
  }
  .intro {
    padding:36px 0;
    align-items:start;
    gap:20px
  }
  .intro h1 {
    font-size:34px
  }
  .intro-copy {
    font-size:13px
  }
  .summary {
    width:106px;
    padding-left:12px
  }
  .summary strong {
    font-size:30px
  }
  .summary small {
    font-size:10px
  }
  .catalog-heading {
    align-items:start
  }
  .catalog-heading>p {
    display:none
  }
  .tools {
    flex-direction:column
  }
  .status-filter {
    width:100%
  }
  .grid {
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:10px
  }
  .preview {
    height:120px
  }
  .card-copy {
    min-height:90px;
    padding:11px
  }
  .card-name {
    font-size:13px
  }
  .results-bar p:last-child {
    display:none
  }
  .detail-layout {
    grid-template-columns:1fr;
    padding:18px;
    gap:14px
  }
  .detail-picture {
    min-height:210px
  }
  .detail-picture canvas {
    max-height:180px
  }
  .dialog-header {
    padding:14px 18px
  }
}
