/* 生產材料計算 */

.craft-layout {
  display: grid;
  grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr);
  gap: 18px;
  align-items: start;
}

.area-side {
  display: grid;
  gap: 18px;
  min-width: 0;
}

.area-side .ad-slot {
  margin: 0;
}

.sub-label {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 0.84rem;
  font-weight: 700;
  color: var(--text-2);
  margin-bottom: 10px;
}

.sub-label .hud {
  margin-left: auto;
}

.workshop {
  display: grid;
  gap: 18px;
}

/* 成品 */
.product {
  display: grid;
  grid-template-columns: 150px minmax(0, 1fr);
  gap: 18px;
  align-items: center;
}

.product__art {
  display: grid;
  justify-items: center;
  gap: 8px;
  padding: 16px 10px 12px;
  border-radius: 14px;
  border: 1px solid color-mix(in srgb, var(--fire) 35%, transparent);
  background:
    radial-gradient(90% 70% at 50% 85%, color-mix(in srgb, var(--fire) 22%, transparent), transparent 70%),
    var(--field);
  text-align: center;
}

.product__art .pic {
  display: grid;
  place-items: center;
  width: 86px;
  height: 86px;
  border-radius: 12px;
  border: 1px solid var(--line-2);
  background: var(--panel-2);
  box-shadow: inset 0 0 18px -6px color-mix(in srgb, var(--fire) 60%, transparent);
}

.product__art .pic img {
  width: 72px;
  height: 72px;
  object-fit: contain;
  image-rendering: pixelated;
}

.product__meta {
  display: grid;
  justify-items: center;
  gap: 4px;
  font-size: 0.86rem;
}

.product__name {
  font-weight: 700;
}

.product__pcs {
  display: none;
  font-size: 0.78rem;
  color: var(--text-3);
}

.product__pcs[data-pcs]:not([data-pcs=""]) {
  display: block;
}

.product__pcs::before {
  content: "每份 ";
}

.product__pcs::after {
  content: " 顆";
}

.product__pick {
  display: grid;
  gap: 12px;
}

/* 舊程式切換類別時會把下拉選單底色改成淺色，這裡固定成主題色以免深色模式看不到字 */
#type,
#product {
  background-color: var(--field) !important;
  color: var(--text) !important;
}

/* 材料 */
.mat-list {
  list-style: none;
  padding: 0;
  display: grid;
  gap: 8px;
  counter-reset: mat;
}

.mat-slot {
  display: grid;
  grid-template-columns: 52px minmax(0, 1fr) auto;
  align-items: center;
  gap: 14px;
  padding: 10px 14px 10px 10px;
  border-radius: 12px;
  border: 1px solid var(--line);
  background: var(--field);
}

.mat-slot:has(img.mat[src$="blank.gif"]) {
  display: none;
}

.mat-slot__icon {
  display: grid;
  place-items: center;
  width: 52px;
  height: 52px;
  border-radius: 10px;
  border: 1px solid var(--line-2);
  background: var(--panel-2);
}

.mat-slot__icon img {
  max-width: 44px;
  max-height: 44px;
  image-rendering: pixelated;
  cursor: pointer;
}

.mat-slot__info {
  display: grid;
  gap: 2px;
  min-width: 0;
}

.mat-slot__info .name {
  display: grid;
  line-height: 1.35;
}

.mat-slot__info .name b {
  font-size: 0.95rem;
}

.mat-slot__info .name small {
  font-size: 0.74rem;
  color: var(--text-3);
}

.mat-slot__info .qty {
  font-family: var(--font-hud);
  font-size: 0.82rem;
  color: var(--text-2);
}

.mat-slot__info .qty::before {
  content: "每件 × ";
  font-family: var(--font-ui);
  color: var(--text-3);
}

.mat-slot__result {
  text-align: right;
  font-size: 0.95rem;
  font-weight: 600;
  white-space: nowrap;
}

/* app.js 用 String.fontcolor() 輸出 <font color>，改成主題色 */
.workshop font[color="blue"],
.notice font[color="blue"] {
  color: var(--water);
  font-weight: 700;
}

.workshop font[color="red"] {
  color: var(--fire);
  font-weight: 700;
}

.notice font[color="#822"] {
  color: var(--gold);
}

/* 計算列 */
.calc {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr) auto;
  align-items: end;
  gap: 12px;
  padding: 14px;
  border-radius: 14px;
  border: 1px solid var(--line-2);
  background: color-mix(in srgb, var(--aqua) 5%, var(--field));
}

.seg--method span {
  min-height: 42px;
  font-family: var(--font-ui);
}

.calc__go {
  min-width: 110px;
}

.result {
  display: grid;
  gap: 6px;
}

.result:has(#pqty:empty):has(#uslt:empty):has(#errMessage:empty) {
  display: none;
}

.result__main {
  font-size: 1.15rem;
  font-weight: 700;
}

.result__sub {
  color: var(--text-2);
}

.result__err {
  color: var(--danger);
  font-weight: 700;
}

.result .sbtn {
  justify-self: start;
  margin-top: 4px;
}

/* 材料反查 */
.lookup__body {
  display: grid;
  gap: 14px;
}

.lookup__pick {
  display: flex;
  gap: 6px;
}

.lookup__pick .select {
  flex: 1;
  min-width: 0;
}

.filter-box__label {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 0.82rem;
  font-weight: 700;
  margin-bottom: 6px;
}

.filter-box--plus .filter-box__label {
  color: var(--ok);
}

.filter-box--minus .filter-box__label {
  color: var(--danger);
}

.filter-box__label small {
  margin-left: auto;
  font-size: 0.74rem;
  font-weight: 400;
  color: var(--text-3);
}

.filter-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  min-height: 44px;
  padding: 6px;
  border-radius: 10px;
  border: 1px dashed var(--line-2);
  background: var(--field);
}

.filter-box--plus .filter-tags {
  border-color: color-mix(in srgb, var(--ok) 40%, transparent);
}

.filter-box--minus .filter-tags {
  border-color: color-mix(in srgb, var(--danger) 40%, transparent);
}

.filter-tags span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 30px;
  padding: 0 10px;
  border-radius: 999px;
  font-size: 0.82rem;
  cursor: pointer;
  border: 1px solid currentColor;
}

.filter-tags span::after {
  content: "×";
  opacity: 0.7;
}

.filter-tags .p_list_item {
  color: var(--ok);
  background: color-mix(in srgb, var(--ok) 12%, transparent);
}

.filter-tags .m_list_item {
  color: var(--danger);
  background: color-mix(in srgb, var(--danger) 12%, transparent);
}

.match .count {
  font-size: 0.84rem;
  color: var(--ok);
  margin-bottom: 6px;
}

.match__list {
  height: 220px;
  padding: 6px;
  background-image: none;
  font-family: var(--font-ui);
}

.match__list option {
  padding: 6px 8px;
  border-radius: 6px;
}

.nomatch {
  padding: 18px;
  text-align: center;
  border-radius: 10px;
  background: var(--field);
  color: var(--text-3);
}

/* 生產清單 */
.orders .panel__head h2 {
  gap: 8px;
}

.orders__empty {
  font-size: 0.86rem;
  color: var(--text-3);
}

#noticeBoard {
  display: grid;
  gap: 10px;
}

#noticeBoard:not(:empty) + .orders__empty {
  display: none;
}

.template {
  display: none;
}

.notice {
  padding: 12px;
  border-radius: 12px;
  border: 1px solid color-mix(in srgb, var(--gold) 30%, transparent);
  background: var(--field);
}

.notice__head {
  display: flex;
  align-items: center;
  gap: 8px;
  padding-bottom: 8px;
  margin-bottom: 6px;
  border-bottom: 1px solid var(--line);
}

.notice__head h3 {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 0.95rem;
}

.notice__head h3 img {
  width: 28px;
  height: 28px;
  object-fit: contain;
  image-rendering: pixelated;
}

.notice .close {
  margin-left: auto;
  display: grid;
  place-items: center;
  width: 30px;
  height: 30px;
  border-radius: 8px;
  border: 1px solid var(--line-2);
  background: transparent;
  color: var(--text-3);
}

.notice .close:hover {
  color: var(--danger);
  border-color: var(--danger);
}

.notice .mt-item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 5px 6px;
  border-radius: 8px;
  font-size: 0.86rem;
  cursor: pointer;
}

.notice .mt-item:hover {
  background: var(--aqua-soft);
}

.notice .mt-item:empty,
.notice .mt-item:not(:has(img)) {
  display: none;
}

.notice .mt-item img {
  width: 24px;
  height: 24px;
  object-fit: contain;
  image-rendering: pixelated;
}

.notice .mt-item.marked {
  text-decoration: line-through;
  opacity: 0.5;
}

/* RWD */
@media (max-width: 1080px) {
  .craft-layout {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 640px) {
  .product {
    grid-template-columns: 1fr;
  }

  .product__art {
    grid-template-columns: auto 1fr;
    justify-items: start;
    text-align: left;
  }

  .product__meta {
    justify-items: start;
  }

  .calc {
    grid-template-columns: 1fr 1fr;
  }

  .seg--method {
    grid-column: 1 / -1;
  }

  .calc__go {
    min-width: 0;
  }

  .mat-slot {
    grid-template-columns: 44px minmax(0, 1fr);
  }

  .mat-slot__icon {
    width: 44px;
    height: 44px;
  }

  .mat-slot__result {
    grid-column: 2;
    text-align: left;
  }
}
