/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */
@layer properties;
.pointer-events-none {
  pointer-events: none;
}
.visible {
  visibility: visible;
}
.absolute {
  position: absolute;
}
.fixed {
  position: fixed;
}
.static {
  position: static;
}
.sticky {
  position: sticky;
}
.left-\[-9999px\] {
  left: -9999px;
}
.z-20 {
  z-index: 20;
}
.container {
  width: 100%;
}
.mx-auto {
  margin-inline: auto;
}
.my-\[22px\] {
  margin-block: 22px;
}
.line-clamp-2 {
  overflow: hidden;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}
.block {
  display: block;
}
.contents {
  display: contents;
}
.flex {
  display: flex;
}
.grid {
  display: grid;
}
.hidden {
  display: none;
}
.inline-flex {
  display: inline-flex;
}
.aspect-\[16\/10\] {
  aspect-ratio: 16/10;
}
.min-h-\[320px\] {
  min-height: 320px;
}
.min-h-screen {
  min-height: 100vh;
}
.w-full {
  width: 100%;
}
.flex-1 {
  flex: 1;
}
.resize {
  resize: both;
}
.list-none {
  list-style-type: none;
}
.grid-cols-1 {
  grid-template-columns: repeat(1, minmax(0, 1fr));
}
.grid-cols-2 {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.grid-cols-\[repeat\(auto-fill\,minmax\(280px\,1fr\)\)\] {
  grid-template-columns: repeat(auto-fill,minmax(280px,1fr));
}
.grid-cols-\[repeat\(auto-fit\,minmax\(140px\,1fr\)\)\] {
  grid-template-columns: repeat(auto-fit,minmax(140px,1fr));
}
.grid-cols-\[repeat\(auto-fit\,minmax\(240px\,1fr\)\)\] {
  grid-template-columns: repeat(auto-fit,minmax(240px,1fr));
}
.grid-cols-\[repeat\(auto-fit\,minmax\(280px\,1fr\)\)\] {
  grid-template-columns: repeat(auto-fit,minmax(280px,1fr));
}
.flex-col {
  flex-direction: column;
}
.flex-wrap {
  flex-wrap: wrap;
}
.place-items-center {
  place-items: center;
}
.items-center {
  align-items: center;
}
.items-start {
  align-items: flex-start;
}
.justify-between {
  justify-content: space-between;
}
.justify-center {
  justify-content: center;
}
.gap-\[14px\] {
  gap: 14px;
}
.gap-\[18px\] {
  gap: 18px;
}
.gap-\[22px\] {
  gap: 22px;
}
.truncate {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.overflow-hidden {
  overflow: hidden;
}
.overflow-x-auto {
  overflow-x: auto;
}
.scroll-smooth {
  scroll-behavior: smooth;
}
.rounded-\[16px\] {
  border-radius: 16px;
}
.rounded-\[18px\] {
  border-radius: 18px;
}
.rounded-\[24px\] {
  border-radius: 24px;
}
.rounded-full {
  border-radius: calc(infinity * 1px);
}
.border {
  border-style: var(--tw-border-style);
  border-width: 1px;
}
.border-t {
  border-top-style: var(--tw-border-style);
  border-top-width: 1px;
}
.border-b {
  border-bottom-style: var(--tw-border-style);
  border-bottom-width: 1px;
}
.border-transparent {
  border-color: transparent;
}
.bg-gradient-to-br {
  --tw-gradient-position: to bottom right in oklab;
  background-image: linear-gradient(var(--tw-gradient-stops));
}
.from-\[\#ece4d6\] {
  --tw-gradient-from: #ece4d6;
  --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
}
.to-\[\#fdfaf4\] {
  --tw-gradient-to: #fdfaf4;
  --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
}
.object-cover {
  -o-object-fit: cover;
     object-fit: cover;
}
.p-\[14px\] {
  padding: 14px;
}
.p-\[14px_16px\] {
  padding: 14px 16px;
}
.px-\[14px\] {
  padding-inline: 14px;
}
.px-\[18px\] {
  padding-inline: 18px;
}
.text-center {
  text-align: center;
}
.text-\[1\.5rem\] {
  font-size: 1.5rem;
}
.text-\[10px\] {
  font-size: 10px;
}
.text-\[clamp\(2\.3rem\,5vw\,4\.8rem\)\] {
  font-size: clamp(2.3rem, 5vw, 4.8rem);
}
.text-\[clamp\(2rem\,5vw\,3\.5rem\)\] {
  font-size: clamp(2rem, 5vw, 3.5rem);
}
.leading-\[0\.96\] {
  --tw-leading: 0.96;
  line-height: 0.96;
}
.leading-\[1\.7\] {
  --tw-leading: 1.7;
  line-height: 1.7;
}
.whitespace-nowrap {
  white-space: nowrap;
}
.uppercase {
  text-transform: uppercase;
}
.opacity-0 {
  opacity: 0%;
}
.transition-all {
  transition-property: all;
  transition-timing-function: var(--tw-ease, ease);
  transition-duration: var(--tw-duration, 0s);
}
.transition-colors {
  transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to;
  transition-timing-function: var(--tw-ease, ease);
  transition-duration: var(--tw-duration, 0s);
}
.duration-180 {
  --tw-duration: 180ms;
  transition-duration: 180ms;
}
@layer base {
  * {
    box-sizing: border-box;
  }
  html {
    scroll-behavior: smooth;
  }
  body {
    font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", sans-serif;
    color: #333;
    background: #fff;
  }
  a {
    color: #0066cc;
    text-decoration: none;
    transition: color 0.18s;
  }
  a:hover {
    color: #0055aa;
  }
  img {
    max-width: 100%;
    display: block;
  }
}
@layer components {
  .pagefind-shell .search-result mark {
    background-color: #fff3cd;
    color: #856404;
    padding: 0 2px;
  }
  .form-status.success {
    color: #4caf50;
  }
  .form-status.error {
    color: #f44336;
  }
}
@layer utilities {
  .text-ink {
    color: #333;
  }
  .text-muted {
    color: #666;
  }
  .text-accent-deep {
    color: #0066cc;
  }
  .bg-site-bg {
    background-color: rgba(255, 255, 255, 0.95);
  }
  .bg-site-panel {
    background-color: #fff;
  }
  .border-line {
    border-color: #e0e0e0;
  }
  .border-line\/6 {
    border-color: rgba(0, 0, 0, 0.06);
  }
  .border-line\/8 {
    border-color: rgba(0, 0, 0, 0.08);
  }
  .border-line\/16 {
    border-color: rgba(0, 0, 0, 0.16);
  }
  .bg-accent {
    background-color: #0066cc;
  }
  .bg-accent-soft {
    background-color: #e3f2fd;
  }
  .shadow-panel {
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  }
  .shadow-card {
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06);
  }
  .font-mono {
    font-family: "SF Mono", "Menlo", "Monaco", monospace;
  }
  .font-sans {
    font-family: "PingFang SC", "Microsoft YaHei", sans-serif;
  }
  .max-w-shell {
    max-width: min(1200px, calc(100vw - 32px));
  }
  .tracking-wide {
    letter-spacing: 0.01em;
  }
  .app-card {
    background: #fff;
    border: 1px solid #e0e0e0;
    border-radius: 8px;
    padding: 16px;
    transition: box-shadow 0.18s, border-color 0.18s;
  }
  .app-card:hover {
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
    border-color: #0066cc;
  }
  .category-tag {
    background: #f5f5f5;
    border-radius: 4px;
    padding: 4px 12px;
    font-size: 12px;
    color: #666;
    transition: background 0.18s, color 0.18s;
  }
  .category-tag:hover {
    background: #e3f2fd;
    color: #0066cc;
  }
}
@property --tw-border-style {
  syntax: "*";
  inherits: false;
  initial-value: solid;
}
@property --tw-gradient-position {
  syntax: "*";
  inherits: false;
}
@property --tw-gradient-from {
  syntax: "<color>";
  inherits: false;
  initial-value: #0000;
}
@property --tw-gradient-via {
  syntax: "<color>";
  inherits: false;
  initial-value: #0000;
}
@property --tw-gradient-to {
  syntax: "<color>";
  inherits: false;
  initial-value: #0000;
}
@property --tw-gradient-stops {
  syntax: "*";
  inherits: false;
}
@property --tw-gradient-via-stops {
  syntax: "*";
  inherits: false;
}
@property --tw-gradient-from-position {
  syntax: "<length-percentage>";
  inherits: false;
  initial-value: 0%;
}
@property --tw-gradient-via-position {
  syntax: "<length-percentage>";
  inherits: false;
  initial-value: 50%;
}
@property --tw-gradient-to-position {
  syntax: "<length-percentage>";
  inherits: false;
  initial-value: 100%;
}
@property --tw-leading {
  syntax: "*";
  inherits: false;
}
@property --tw-duration {
  syntax: "*";
  inherits: false;
}
@layer properties {
  @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) {
    *, ::before, ::after, ::backdrop {
      --tw-border-style: solid;
      --tw-gradient-position: initial;
      --tw-gradient-from: #0000;
      --tw-gradient-via: #0000;
      --tw-gradient-to: #0000;
      --tw-gradient-stops: initial;
      --tw-gradient-via-stops: initial;
      --tw-gradient-from-position: 0%;
      --tw-gradient-via-position: 50%;
      --tw-gradient-to-position: 100%;
      --tw-leading: initial;
      --tw-duration: initial;
    }
  }
}
