:root {
  --ink:#202b27;
  --muted:#747a73;
  --green:#356c4a;
  --pale:#eaf0e8;
  --paper:#f9faf6;
  --line:#e0e5db;
  --white:#fff;
  --radius:16px;
  font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  color:var(--ink);
  background:var(--paper);
  font-synthesis:none;
}
* {
  box-sizing:border-box;
}
body {
  margin:0;
}
a {
  color:inherit;
  text-decoration:none;
}
button,input,textarea,select {
  font:inherit;
}
button,a,input,select,textarea {
  -webkit-tap-highlight-color:transparent;
}
button,a {
  touch-action:manipulation;
}
button {
  cursor:pointer;
}
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible {
  outline:3px solid #88ab65;
  outline-offset:4px;
}
img {
  display:block;
  max-width:100%;
}
.wrap {
  max-width:1280px;
  margin:auto;
  padding-left:40px;
  padding-right:40px;
}
.header {
  border-bottom:1px solid var(--line);
  background:#fff;
}
.nav {
  height:92px;
  display:flex;
  align-items:center;
  gap:66px;
}
.brand {
  font-weight:800;
  font-size:27px;
  letter-spacing:-1.4px;
  display:inline-flex;
  align-items:center;
  white-space:nowrap;
}
.brand-dot {
  color:var(--green);
}
.brand-mark {
  display:grid;
  place-items:center;
  background:var(--green);
  color:white;
  width:36px;
  height:39px;
  border-radius:10px;
  font-size:39px;
  font-weight:400;
  margin-right:10px;
  line-height:1;
}
.nav nav {
  display:flex;
  gap:32px;
  font-size:14px;
  font-weight:600;
  height:100%;
  align-items:center;
}
.nav nav a {
  height:100%;
  display:flex;
  align-items:center;
  border-bottom:3px solid transparent;
  padding-top:3px;
}
.nav nav a.active {
  border-color:var(--green);
  color:var(--green);
}
.nav-note {
  font-size:11px;
  margin-left:auto;
  color:var(--muted);
  display:flex;
  align-items:center;
  gap:8px;
}
.nav-note span {
  width:6px;
  height:6px;
  border-radius:100%;
  background:#6d9261;
}
.intro {
  display:grid;
  grid-template-columns:1.2fr 1fr;
  padding:58px 0 44px;
  gap:40px;
  border-bottom:1px solid var(--line);
}
.eyebrow {
  font-size:10px;
  font-weight:750;
  letter-spacing:1.8px;
  line-height:1.6;
  margin:0 0 12px;
}
.accent {
  color:var(--green);
}
h1,h2,h3,p {
  margin-top:0;
}
h1 {
  font-size:48px;
  letter-spacing:-2.2px;
  line-height:1.1;
  margin-bottom:20px;
}
.intro h1 {
  font-size:62px;
  font-weight:750;
  letter-spacing:-3px;
  margin-bottom:20px;
}
.intro h1 span {
  color:var(--green);
}
.intro p:not(.eyebrow) {
  color:var(--muted);
  font-size:15px;
  line-height:1.8;
  margin-bottom:0;
}
.intro-art {
  position:relative;
  background:#e9eee4;
  min-height:260px;
  border-radius:20px;
  overflow:hidden;
  display:grid;
  place-items:center;
  background-image:radial-gradient(#c8d2bf 1px,transparent 1px);
  background-size:19px 19px;
}
.orbit {
  position:absolute;
  width:250px;
  height:250px;
  border:1px solid #bdcbb2;
  border-radius:100%;
  transform:rotate(-25deg) scaleY(.5);
}
.orbit-two {
  transform:rotate(60deg) scaleY(.65);
  width:230px;
  height:230px;
}
.wire-cube {
  width:112px;
  height:112px;
  position:relative;
  transform:rotate(-30deg) skew(10deg,10deg);
  background:#789b62;
  border:1px solid #587747;
  box-shadow:14px 16px 0 #9cb88b,28px 32px 0 #c1d1b6;
}
.wire-cube:before,.wire-cube:after {
  content:"";
  position:absolute;
  inset:14px;
  border:1px solid #dde8d3;
}
.wire-cube:after {
  inset:28px;
}
.art-caption {
  position:absolute;
  bottom:22px;
  left:25px;
  font-size:8px;
  font-weight:650;
  letter-spacing:2px;
  color:#5c7450;
}
.art-coordinate {
  position:absolute;
  top:22px;
  right:24px;
  font:10px monospace;
  color:#6d8064;
}
.library {
  padding-top:37px;
}
.section-top {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:28px;
}
.section-top h2 {
  font-size:27px;
  letter-spacing:-.8px;
  margin-bottom:0;
}
.section-top .eyebrow {
  font-size:9px;
  color:var(--muted);
  margin-bottom:6px;
}
.count {
  display:inline-grid;
  place-items:center;
  background:var(--pale);
  font-size:13px;
  color:var(--green);
  font-weight:600;
  min-width:29px;
  height:27px;
  padding:0 8px;
  vertical-align:middle;
  border-radius:7px;
  letter-spacing:0;
  margin-left:9px;
}
.search {
  display:flex;
  align-items:center;
  background:white;
  border:1px solid var(--line);
  border-radius:10px;
  width:390px;
  padding:5px 6px 5px 14px;
  gap:9px;
}
.search>span {
  font-size:25px;
  color:var(--muted);
}
.search input {
  border:0;
  min-width:0;
  flex:1;
  padding:9px 0;
  background:none;
  margin:0;
  font-size:12px;
}
.search button {
  border:0;
  background:var(--pale);
  color:var(--green);
  font-size:11px;
  font-weight:650;
  padding:11px 12px;
  border-radius:6px;
}
.filters {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:20px;
  margin:25px 0;
}
.tag-list {
  display:flex;
  gap:8px;
  flex-wrap:wrap;
}
.chip {
  font-size:12px;
  border:1px solid var(--line);
  border-radius:7px;
  padding:8px 13px;
  background:#fff;
  white-space:nowrap;
  transition:background .15s;
}
.chip:hover {
  background:var(--pale);
}
.chip.selected {
  background:var(--ink);
  border-color:var(--ink);
  color:white;
}
.sort {
  display:flex;
  gap:7px;
  align-items:center;
  flex-shrink:0;
  font-size:11px;
  color:var(--muted);
}
.sort select {
  border:0;
  padding:6px 2px;
  width:auto;
  margin:0;
  color:var(--ink);
  font-size:11px;
  background:transparent;
}
.text-button {
  background:transparent;
  border:0;
  color:var(--green);
  font-size:12px;
  padding:7px;
}
.model-grid {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:26px;
}
.model-card {
  border:1px solid var(--line);
  border-radius:var(--radius);
  overflow:hidden;
  background:var(--white);
  transition:transform .18s,box-shadow .18s;
}
.model-card:hover {
  transform:translateY(-4px);
  box-shadow:0 10px 28px #2034240b;
}
.card-image {
  position:relative;
  display:block;
  aspect-ratio:4/3;
  background:#edf0e8;
}
.card-image img {
  width:100%;
  height:100%;
  object-fit:cover;
}
.free-badge {
  position:absolute;
  top:14px;
  left:14px;
  background:#fffffff2;
  border-radius:5px;
  padding:5px 7px;
  font-size:9px;
  letter-spacing:1px;
  font-weight:750;
}
.card-body {
  padding:20px;
}
.card-body .eyebrow {
  font-size:8px;
  color:var(--muted);
  margin-bottom:8px;
}
.card-body h2 {
  font-size:19px;
  letter-spacing:-.4px;
  line-height:1.4;
  margin-bottom:22px;
}
.card-bottom {
  display:flex;
  justify-content:space-between;
  font-size:11px;
  color:var(--muted);
}
.placeholder {
  font-size:100px;
  display:grid;
  place-items:center;
  height:100%;
  color:#8ba07c;
}
.empty {
  padding:60px 24px;
  background:#f0f3eb;
  border:1px dashed #cbd6c2;
  border-radius:16px;
  text-align:center;
  margin:24px 0;
}
.empty-icon {
  font-size:60px;
  line-height:1;
  color:var(--green);
  margin-bottom:20px;
}
.empty h3,.empty h2 {
  font-size:24px;
  letter-spacing:-.6px;
  margin-bottom:12px;
}
.empty p {
  color:var(--muted);
  font-size:14px;
  line-height:1.6;
}
.button {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border:1px solid var(--green);
  background:var(--green);
  color:white;
  border-radius:8px;
  padding:13px 20px;
  font-size:13px;
  font-weight:650;
  line-height:1.4;
  gap:8px;
  cursor:pointer;
}
.button:hover {
  filter:brightness(.93);
}
.secondary {
  background:white;
  color:var(--green);
  border-color:var(--line);
}
.full {
  width:100%;
  margin-top:24px;
}
.footer {
  border-top:1px solid var(--line);
  margin-top:65px;
  padding:28px 0 30px;
  display:flex;
  align-items:center;
  gap:28px;
  color:var(--muted);
  font-size:10px;
}
.footer .brand {
  color:var(--ink);
  font-size:19px;
  letter-spacing:-1px;
}
.footer p {
  margin:0;
}
.footer>span {
  margin-left:auto;
}
.back {
  display:inline-block;
  font-size:12px;
  color:var(--muted);
  margin:32px 0;
}
.detail {
  display:grid;
  grid-template-columns:1.12fr 1fr;
  gap:52px;
  align-items:start;
}
.main-image {
  background:var(--pale);
  border-radius:16px;
  overflow:hidden;
  aspect-ratio:1/1;
}
.main-image img {
  width:100%;
  height:100%;
  object-fit:contain;
}
.thumbnails {
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  margin-top:16px;
}
.thumbnail {
  padding:3px;
  background:white;
  border:1px solid var(--line);
  border-radius:8px;
  width:80px;
  height:72px;
}
.thumbnail img {
  width:100%;
  height:100%;
  object-fit:cover;
  border-radius:5px;
}
.thumbnail.selected {
  border:2px solid var(--green);
}
.model-info {
  padding-top:10px;
}
.model-info h1 {
  font-size:40px;
  line-height:1.12;
  letter-spacing:-1.6px;
}
.model-meta {
  display:flex;
  gap:20px;
  font-size:11px;
  color:var(--muted);
  flex-wrap:wrap;
  margin-bottom:24px;
}
.download-panel {
  background:var(--pale);
  border:1px solid #d9e3d2;
  border-radius:14px;
  padding:24px;
  margin-top:28px;
}
.download-panel h2 {
  display:flex;
  align-items:center;
  justify-content:space-between;
  font-size:21px;
  letter-spacing:-.5px;
  margin-bottom:9px;
}
.download-panel h2 span {
  font-size:9px;
  font-weight:650;
  background:#d8e5cf;
  color:var(--green);
  padding:5px 7px;
  border-radius:5px;
  letter-spacing:1px;
}
.download-panel>p {
  font-size:12px;
  color:var(--muted);
  margin-bottom:22px;
}
.download-row {
  display:flex;
  gap:12px;
  align-items:center;
  padding:13px 12px;
  background:white;
  border:1px solid #dce4d6;
  border-radius:8px;
  margin-top:9px;
}
.download-row>span:nth-child(2) {
  min-width:0;
}
.download-row strong {
  font-size:12px;
  display:block;
  overflow-wrap:anywhere;
}
.download-row small {
  display:block;
  font-size:10px;
  color:var(--muted);
  margin-top:4px;
}
.file-icon {
  font-size:9px;
  font-weight:750;
  color:var(--green);
  background:var(--pale);
  padding:11px 5px;
  min-width:37px;
  text-align:center;
  border-radius:5px;
}
.download-arrow {
  margin-left:auto;
  color:var(--green);
  font-size:23px;
}
.license-box {
  display:flex;
  gap:13px;
  margin:24px 0;
  color:var(--muted);
  font-size:12px;
  line-height:1.6;
}
.license-box strong {
  display:block;
  color:var(--ink);
  margin-bottom:5px;
}
.license-box a {
  display:block;
  color:var(--green);
  text-decoration:underline;
  text-underline-offset:3px;
}
.license-box p {
  font-size:11px;
  margin:6px 0;
}
.description {
  padding:40px 0 0;
  max-width:740px;
}
.description h2 {
  font-size:27px;
  letter-spacing:-.6px;
}
.prose {
  white-space:normal;
  overflow-wrap:anywhere;
  line-height:1.9;
  color:#596359;
  font-size:14px;
}
.auth {
  max-width:440px;
  margin:65px auto!important;
  padding:35px!important;
}
.auth h1 {
  font-size:36px;
}
.auth>p:not(.eyebrow) {
  color:var(--muted);
  font-size:13px;
  line-height:1.7;
}
.auth .back {
  margin:22px 0 0;
}
.panel {
  background:white;
  border:1px solid var(--line);
  border-radius:14px;
  padding:28px;
}
.panel label {
  display:block;
  font-size:12px;
  font-weight:650;
  margin:23px 0 9px;
}
.panel label span {
  font-weight:400;
  color:var(--muted);
  font-size:10px;
  margin-left:4px;
}
input:not([type=checkbox],[type=hidden]),textarea,select {
  width:100%;
  border:1px solid #d8ded3;
  background:#fcfdfb;
  color:var(--ink);
  border-radius:7px;
  padding:12px;
  font-size:13px;
}
textarea {
  resize:vertical;
  line-height:1.7;
  min-height:150px;
}
input::placeholder,textarea::placeholder {
  color:#969d91;
}
input[type=checkbox] {
  accent-color:var(--green);
  width:16px;
  height:16px;
  flex-shrink:0;
}
.admin-heading {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px;
  margin:42px 0 32px;
}
.back+.admin-heading {
  margin-top:0;
}
.admin-heading h1 {
  font-size:37px;
  letter-spacing:-1.4px;
  margin:0;
}
.actions {
  display:flex;
  align-items:center;
  gap:18px;
}
.editor {
  display:grid;
  grid-template-columns:1.15fr 1fr;
  gap:24px;
  align-items:start;
}
.editor-side {
  display:grid;
  gap:24px;
}
.panel-title {
  display:flex;
  gap:12px;
  align-items:center;
  border-bottom:1px solid var(--line);
  padding-bottom:18px;
}
.panel-title>span {
  font:11px monospace;
  color:var(--green);
  background:var(--pale);
  padding:8px;
  border-radius:7px;
}
.panel-title h2 {
  font-size:18px;
  letter-spacing:-.3px;
  margin:0;
}
.field-note {
  font-size:11px;
  color:var(--muted);
  line-height:1.7;
  margin:10px 0 15px;
}
.file-input {
  padding:20px 14px!important;
  border:1px dashed #b9cbb0!important;
  background:#f5f8f1!important;
  font-size:11px!important;
}
.file-input::file-selector-button {
  background:white;
  border:1px solid var(--line);
  padding:8px 12px;
  border-radius:5px;
  margin-right:10px;
  color:var(--green);
  cursor:pointer;
}
.save-bar {
  grid-column:1/-1;
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:20px 0;
  border-top:1px solid var(--line);
  gap:20px;
}
.save-bar p {
  font-size:11px;
  line-height:1.8;
  color:var(--muted);
  margin:0;
}
.existing-image {
  display:flex;
  gap:12px;
  align-items:center;
  margin-top:14px;
}
.existing-image img {
  width:72px;
  height:60px;
  object-fit:cover;
  border-radius:7px;
}
.existing-image label {
  display:flex;
  gap:8px;
  align-items:center;
  font-weight:400;
  font-size:11px;
  margin:0;
  overflow-wrap:anywhere;
  min-width:0;
}
.existing-file {
  display:flex!important;
  gap:10px;
  align-items:center;
  background:var(--paper);
  border-radius:6px;
  padding:10px;
  overflow-wrap:anywhere;
}
.existing-file small {
  display:block;
  margin-top:5px;
}
.upload-preview {
  display:flex;
  gap:8px;
  flex-wrap:wrap;
  margin-top:10px;
}
.upload-preview img {
  width:65px;
  height:65px;
  object-fit:cover;
  border-radius:7px;
}
.danger-zone {
  border-top:1px solid var(--line);
  margin-top:40px;
  padding-top:25px;
}
.danger-zone h2 {
  font-size:18px;
}
.danger-zone p {
  font-size:12px;
  color:var(--muted);
}
.danger {
  color:#a13931;
  border-color:#e8c5bd;
  background:#fff5f1;
}
.notice,.error {
  padding:16px 20px;
  border-radius:8px;
  margin:22px 0;
  font-size:13px;
  line-height:1.6;
}
.notice {
  background:#e5f0df;
  color:#2d612d;
}
.error {
  background:#fff0e9;
  color:#9c3625;
}
.table-scroll {
  overflow-x:auto;
  padding:0;
}
table {
  width:100%;
  border-collapse:collapse;
  text-align:left;
  white-space:nowrap;
}
th {
  font-size:10px;
  letter-spacing:1px;
  color:var(--muted);
  text-transform:uppercase;
  padding:18px 24px;
  background:#f0f4ec;
}
td {
  padding:20px 24px;
  border-top:1px solid var(--line);
  font-size:12px;
}
td:first-child {
  white-space:normal;
  min-width:200px;
}
td small {
  display:block;
  color:var(--muted);
  font-size:9px;
  margin-top:7px;
}
.edit-link {
  color:var(--green);
  font-weight:650;
}
.pagination {
  display:flex;
  align-items:center;
  justify-content:center;
  gap:24px;
  margin:32px 0;
  color:var(--muted);
  font-size:12px;
}
.sr-only,.skip {
  position:absolute;
  width:1px;
  height:1px;
  padding:0;
  overflow:hidden;
  clip:rect(0,0,0,0);
  white-space:nowrap;
}
.skip:focus {
  position:fixed;
  top:8px;
  left:8px;
  width:auto;
  height:auto;
  clip:auto;
  z-index:10;
  padding:15px;
  background:white;
}
.search input {
  border:0;
  background:none;
  padding:9px 0;
}
.sort select {
  width:auto;
  border:0;
  background:transparent;
  padding:6px 2px;
}
@media(min-width:1400px) {
  .model-grid {
    grid-template-columns:repeat(4,minmax(0,1fr));
  }
  .wrap {
    max-width:1440px;
  }
}
@media(max-width:1000px) {
  .nav {
    gap:35px;
  }
  .nav-note {
    display:none;
  }
  .intro h1 {
    font-size:53px;
  }
  .model-grid {
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:18px;
  }
  .filters {
    align-items:flex-start;
    flex-direction:column;
  }
  .detail {
    gap:28px;
  }
  .model-info h1 {
    font-size:32px;
  }
  .download-panel {
    padding:18px;
  }
  .footer {
    gap:15px;
  }
  .editor {
    gap:18px;
  }
  .panel {
    padding:22px;
  }
}
@media(max-width:720px) {
  .wrap {
    padding-left:20px;
    padding-right:20px;
  }
  .nav {
    height:74px;
    justify-content:space-between;
    gap:15px;
  }
  .brand {
    font-size:23px;
  }
  .brand-mark {
    width:28px;
    height:32px;
    font-size:31px;
  }
  .nav nav {
    gap:18px;
    font-size:12px;
  }
  .intro {
    grid-template-columns:1fr;
    padding:35px 0 30px;
    gap:25px;
  }
  .intro h1 {
    font-size:49px;
  }
  .intro-art {
    min-height:190px;
  }
  .wire-cube {
    width:85px;
    height:85px;
  }
  .art-caption {
    font-size:7px;
  }
  .intro p:not(.eyebrow) {
    font-size:13px;
  }
  .section-top {
    align-items:stretch;
    flex-direction:column;
    gap:20px;
  }
  .search {
    width:100%;
  }
  .section-top h2 {
    font-size:25px;
  }
  .model-grid {
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:14px;
  }
  .card-body {
    padding:15px;
  }
  .card-body h2 {
    font-size:16px;
  }
  .free-badge {
    top:9px;
    left:9px;
  }
  .footer {
    display:flex;
    flex-wrap:wrap;
    padding-left:0;
    padding-right:0;
    margin-top:42px;
    gap:12px;
  }
  .footer>span {
    margin-left:0;
    width:100%;
  }
  .detail,.editor {
    grid-template-columns:1fr;
  }
  .model-info {
    padding-top:0;
  }
  .model-info h1 {
    font-size:36px;
  }
  .description {
    padding-top:35px;
  }
  .admin-heading {
    align-items:flex-start;
    flex-direction:column;
    margin-top:30px;
  }
  .admin-heading h1 {
    font-size:32px;
  }
  .editor-side {
    gap:18px;
  }
  .save-bar {
    align-items:flex-start;
    flex-direction:column;
  }
  .save-bar .button {
    width:100%;
  }
  .auth {
    margin-top:36px!important;
    padding:26px!important;
  }
  .auth h1 {
    font-size:32px;
  }
  .empty {
    padding:38px 18px;
  }
  .empty h3 {
    font-size:21px;
  }
  .desktop {
    display:none;
  }
}
@media(prefers-reduced-motion:reduce) {
  * {
    transition:none!important;
  }
}
h1,.card-body h2 {
  overflow-wrap:anywhere;
}
