@import "tailwindcss"; @theme inline { --color-background: var(--background); --color-foreground: var(--text-primary); --color-primary: var(--primary); --color-primary-foreground: #ffffff; --color-muted-foreground: var(--text-secondary); --color-border: var(--border-subtle); --radius-lg: var(--radius-card); --radius-xl: var(--radius-panel); } :root { color-scheme: light; --background: #dcebf5; --text-primary: #0f172a; --text-secondary: #64748b; --text-muted: #94a3b8; --primary: #3b82f6; --primary-hover: #2563eb; --primary-soft: rgba(59, 130, 246, 0.1); --surface-sidebar: linear-gradient( 180deg, rgba(235, 243, 251, 0.52), rgba(204, 220, 238, 0.34) ); --surface-search: linear-gradient( 135deg, rgba(240, 246, 252, 0.56), rgba(210, 225, 241, 0.4) ); --surface-card: linear-gradient( 135deg, rgba(231, 240, 249, 0.43), rgba(198, 216, 236, 0.32) ); --surface-card-hover: linear-gradient( 135deg, rgba(242, 248, 253, 0.6), rgba(216, 230, 244, 0.48) ); --border-glass: rgba(255, 255, 255, 0.38); --border-subtle: rgba(15, 23, 42, 0.08); --shadow-soft: inset 0 1px 0 rgba(255, 255, 255, 0.34); --shadow-medium: 0 22px 58px rgba(4, 12, 34, 0.17), inset 0 1px 0 rgba(255, 255, 255, 0.4); --shadow-panel: 0 28px 72px rgba(4, 12, 34, 0.18), inset 0 1px 0 rgba(255, 255, 255, 0.42); --radius-card: 20px; --radius-panel: 24px; --sidebar-expanded: 240px; --sidebar-collapsed: 72px; --layout-gap: 20px; } * { box-sizing: border-box; } html, body { min-height: 100%; } body { isolation: isolate; margin: 0; overflow-x: hidden; color: var(--text-primary); background-color: #0b102b; background-image: url("/backgrounds/test.jpg"); background-position: center; background-size: cover; background-repeat: no-repeat; background-attachment: fixed; font-family: Inter, "SF Pro Display", "SF Pro Text", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif; } body::before { position: fixed; inset: 0; z-index: -1; content: ""; pointer-events: none; background: linear-gradient( 180deg, rgba(3, 7, 28, 0.2) 0%, rgba(9, 18, 54, 0.07) 48%, rgba(216, 230, 244, 0.08) 100% ); -webkit-backdrop-filter: none; backdrop-filter: none; } button, input, a { font: inherit; } button, a { -webkit-tap-highlight-color: transparent; } :focus-visible { outline: 3px solid rgba(59, 130, 246, 0.34); outline-offset: 3px; } .glass-panel { border: 1px solid var(--border-glass); border-radius: var(--radius-panel); background: var(--surface-card); box-shadow: var(--shadow-soft); -webkit-backdrop-filter: blur(16px) saturate(134%); backdrop-filter: blur(16px) saturate(134%); } .app-shell { --sidebar-width: var(--sidebar-expanded); min-height: 100svh; } .app-shell[data-sidebar-collapsed="true"] { --sidebar-width: var(--sidebar-collapsed); } .app-shell:not([data-hydrated="true"]) *, .app-shell:not([data-hydrated="true"]) *::before, .app-shell:not([data-hydrated="true"]) *::after { transition: none !important; } .sidebar { position: fixed; inset: 20px auto 20px 20px; z-index: 20; display: flex; width: var(--sidebar-width); overflow: visible; flex-direction: column; border: 1px solid var(--border-glass); border-radius: var(--radius-panel); background: var(--surface-sidebar); box-shadow: var(--shadow-panel); -webkit-backdrop-filter: blur(18px) saturate(132%); backdrop-filter: blur(18px) saturate(132%); transition: width 180ms ease; } .sidebar__header { position: relative; display: flex; min-height: 72px; align-items: center; gap: 10px; padding: 0 16px; border-bottom: 1px solid rgba(255, 255, 255, 0.26); } .sidebar__brand { display: flex; min-width: 0; flex: 1; align-items: center; gap: 12px; color: var(--text-primary); text-decoration: none; } .sidebar__brand img { display: block; flex: none; } .sidebar__site-name { overflow: hidden; font-size: 18px; font-weight: 700; letter-spacing: -0.025em; text-overflow: ellipsis; white-space: nowrap; } .sidebar__header > button { flex: none; color: var(--text-secondary); border-radius: 12px; transition: color 180ms ease, background 180ms ease; } .sidebar__header > button:hover { color: var(--primary-hover); background: var(--primary-soft); } .sidebar__nav { display: flex; min-height: 0; flex: 1; flex-direction: column; gap: 8px; overflow-y: auto; padding: 12px 12px 16px; } .sidebar__categories { display: flex; flex-direction: column; gap: 6px; } .sidebar__nav-item { display: flex; width: 100%; height: 48px; min-height: 48px; align-items: center; justify-content: flex-start; gap: 12px; padding: 0 14px; color: #334155; text-decoration: none; border: 0; border-radius: 16px; background: transparent; transition: color 180ms ease, background 180ms ease; } .sidebar__nav-item svg { width: 20px; height: 20px; flex: none; } .sidebar__nav-item--active { color: var(--primary-hover); background: var(--primary-soft); font-weight: 650; } .sidebar__nav-item:hover { color: var(--primary-hover); background: var(--primary-soft); } .sidebar__label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .app-shell[data-sidebar-collapsed="true"] .sidebar__header { justify-content: center; padding-inline: 10px; } .app-shell[data-sidebar-collapsed="true"] .sidebar__brand { justify-content: center; } .app-shell[data-sidebar-collapsed="true"] .sidebar__header > button { position: absolute; top: 22px; right: -14px; width: 28px; height: 28px; border: 1px solid var(--border-glass); background: rgba(255, 255, 255, 0.9); box-shadow: 0 8px 24px rgba(15, 23, 42, 0.12); } .app-shell[data-sidebar-collapsed="true"] .sidebar__nav { padding-inline: 10px; } .app-shell[data-sidebar-collapsed="true"] .sidebar__nav-item { justify-content: center; padding-inline: 0; } .app-shell__content { min-height: 100svh; margin-left: calc(var(--sidebar-width) + 40px); transition: margin-left 180ms ease; } .home-content { display: grid; min-height: 100svh; place-items: start center; padding: clamp(108px, 14vh, 156px) 40px 64px; } .home-content__inner { width: min(100%, 880px); } .clock-greeting { text-align: center; } .clock-greeting__time { min-height: 1.2em; margin: 0; color: rgba(248, 250, 252, 0.98); font-size: clamp(44px, 4.2vw, 56px); font-weight: 700; line-height: 1.16; letter-spacing: -0.035em; text-shadow: 0 3px 24px rgba(2, 6, 23, 0.48); text-wrap: balance; } .clock-greeting__date { margin: 12px 0 0; color: rgba(241, 245, 249, 0.86); font-size: 16px; line-height: 1.6; text-shadow: 0 2px 16px rgba(2, 6, 23, 0.42); } .search-box { position: relative; z-index: 10; width: min(100%, 760px); margin: 40px auto 0; } .search-box__form { display: flex; height: 68px; align-items: center; border: 1px solid var(--border-glass); border-radius: var(--radius-panel); background: var(--surface-search); box-shadow: var(--shadow-medium); -webkit-backdrop-filter: blur(18px) saturate(136%); backdrop-filter: blur(18px) saturate(136%); transition: border-color 180ms ease, box-shadow 180ms ease, background 180ms ease; } .search-box__form:focus-within { border-color: rgba(191, 219, 254, 0.46); background: linear-gradient( 135deg, rgba(245, 249, 253, 0.66), rgba(218, 231, 245, 0.52) ); box-shadow: 0 0 0 4px rgba(147, 197, 253, 0.12), var(--shadow-medium); } .search-provider-menu__trigger { width: 48px; min-width: 48px; height: 48px; justify-content: center; margin-left: 10px; padding: 0; color: #334155; border-radius: 16px; } .search-provider-menu__icon { width: 24px; height: 24px; flex: none; object-fit: contain; } .search-provider-menu__trigger:hover, .search-provider-menu__trigger[aria-expanded="true"] { color: var(--primary-hover); background: var(--primary-soft); } .search-box__icon { width: 20px; height: 20px; flex: none; margin-left: 10px; color: rgba(51, 65, 85, 0.58); } .search-box__input { min-width: 0; height: 100%; flex: 1; padding: 0 14px; color: var(--text-primary); font-size: 16px; line-height: 1.5; border: 0; outline: 0; background: transparent; } .search-box__input::placeholder { color: rgba(51, 65, 85, 0.62); opacity: 1; } .search-box__shortcut { display: inline-flex; min-width: 50px; height: 30px; flex: none; align-items: center; justify-content: center; margin-right: 16px; padding-inline: 9px; color: var(--text-muted); font-family: inherit; font-size: 12px; line-height: 1; border: 1px solid rgba(100, 116, 139, 0.2); border-radius: 9px; background: rgba(255, 255, 255, 0.42); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.68); } .local-search-results { position: absolute; top: calc(100% + 8px); left: 0; z-index: 30; width: 100%; max-height: min(520px, calc(100vh - 220px)); overflow-y: auto; padding: 8px; border: 1px solid var(--border-glass); border-radius: 20px; background: rgba(255, 255, 255, 0.9); box-shadow: var(--shadow-medium); -webkit-backdrop-filter: blur(24px); backdrop-filter: blur(24px); } .local-search-results__option { display: flex; min-height: 58px; align-items: center; gap: 12px; padding: 9px 12px; color: var(--text-primary); text-decoration: none; border: 1px solid transparent; border-radius: 14px; transition: color 180ms ease, background 180ms ease, border-color 180ms ease; } .local-search-results__option[aria-selected="true"] { color: var(--primary-hover); border-color: rgba(59, 130, 246, 0.08); background: var(--primary-soft); } .local-search-results__copy { display: flex; min-width: 0; flex: 1; flex-direction: column; gap: 3px; } .local-search-results__title, .local-search-results__category { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .local-search-results__title { font-size: 14px; font-weight: 650; } .local-search-results__category { color: var(--text-secondary); font-size: 12px; } .local-search-results__empty { display: grid; min-height: 96px; place-items: center; margin: 0; color: var(--text-secondary); font-size: 14px; } .quick-links { width: min(100%, 880px); margin-top: 44px; } .quick-links__title { margin: 0 0 18px; color: rgba(248, 250, 252, 0.96); font-size: 16px; font-weight: 650; text-shadow: 0 2px 14px rgba(2, 6, 23, 0.44); } .quick-links__grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px 18px; } .quick-link-card { display: flex; min-width: 0; height: 76px; align-items: center; gap: 14px; padding: 0 20px; color: var(--text-primary); text-decoration: none; border: 1px solid var(--border-glass); border-radius: var(--radius-card); background: var(--surface-card); box-shadow: var(--shadow-soft); -webkit-backdrop-filter: blur(16px) saturate(134%); backdrop-filter: blur(16px) saturate(134%); transition: transform 180ms ease, background 180ms ease, border-color 180ms ease, box-shadow 180ms ease; } .quick-link-card:hover { transform: translateY(-2px); border-color: rgba(255, 255, 255, 0.54); background: var(--surface-card-hover); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.5); } .quick-link-card > span:last-child { min-width: 0; overflow: hidden; font-size: 15px; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; } .category-page { min-height: 100svh; padding: 20px 20px 20px 0; } .category-page__panel { min-height: calc(100svh - 40px); padding: 48px clamp(32px, 4vw, 64px) 56px; background: var(--surface-sidebar); box-shadow: var(--shadow-panel); -webkit-backdrop-filter: blur(18px) saturate(132%); backdrop-filter: blur(18px) saturate(132%); } .category-header { max-width: 720px; } .category-header__title { margin: 0; color: var(--text-primary); font-size: clamp(36px, 3.4vw, 44px); font-weight: 700; line-height: 1.15; letter-spacing: -0.03em; } .category-header__description { margin: 12px 0 0; color: var(--text-secondary); font-size: 16px; line-height: 1.7; } .category-tools { margin-top: 36px; } .category-section-header { display: flex; align-items: center; gap: 12px; margin-bottom: 20px; } .category-section-header__title { margin: 0; font-size: 18px; font-weight: 700; } .category-section-header__count { padding: 4px 10px; color: var(--text-muted); font-size: 14px; border: 1px solid rgba(255, 255, 255, 0.24); border-radius: 999px; background: rgba(255, 255, 255, 0.3); } .tool-card { position: relative; display: flex; min-width: 0; height: 96px; align-items: center; gap: 16px; padding: 20px 22px; color: var(--text-primary); text-decoration: none; border: 1px solid var(--border-glass); border-radius: 18px; background: var(--surface-card); box-shadow: var(--shadow-soft); -webkit-backdrop-filter: blur(16px) saturate(134%); backdrop-filter: blur(16px) saturate(134%); transition: transform 180ms ease, background 180ms ease, border-color 180ms ease; } .tool-card:hover { transform: translateY(-2px); border-color: rgba(255, 255, 255, 0.54); background: var(--surface-card-hover); } .tool-card__icon { flex: none; } .tool-card__copy { display: flex; min-width: 0; flex: 1; flex-direction: column; gap: 4px; } .tool-card__title, .tool-card__description { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .tool-card__title { font-size: 17px; font-weight: 700; } .tool-card__description { color: var(--text-secondary); font-size: 14px; line-height: 1.5; } .tool-card__external { width: 16px; height: 16px; flex: none; align-self: flex-start; color: var(--text-secondary); opacity: 0.72; transition: color 180ms ease, opacity 180ms ease; } .tool-card:hover .tool-card__external { color: var(--primary-hover); opacity: 1; } .tool-grid { display: grid; margin: 0; padding: 0; list-style: none; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px 24px; } .tool-grid__item { min-width: 0; } .category-empty-state { display: flex; min-height: 280px; align-items: center; justify-content: center; flex-direction: column; color: var(--text-secondary); text-align: center; } .category-empty-state > svg { width: 36px; height: 36px; color: var(--text-muted); } .category-empty-state__title { margin: 16px 0 0; color: var(--text-primary); font-size: 17px; font-weight: 700; } .category-empty-state__description { margin: 6px 0 0; font-size: 14px; line-height: 1.6; } .site-icon { position: relative; display: inline-flex; overflow: hidden; flex: none; align-items: center; justify-content: center; border-radius: 11px; } .site-icon svg, .site-icon img { display: block; max-width: 100%; max-height: 100%; } .site-icon img { width: 100%; height: 100%; object-fit: contain; border-radius: 10px; } .site-icon__image { position: absolute; inset: 0; } .site-icon__image--loading { opacity: 0; } .site-icon--initial::before { content: attr(data-initial); } .site-icon--initial { color: var(--primary-hover); font-size: 15px; font-weight: 700; background: rgba(219, 234, 254, 0.7); box-shadow: inset 0 0 0 1px rgba(59, 130, 246, 0.08); } .local-search-results, .sidebar__nav { scrollbar-color: rgba(100, 116, 139, 0.32) transparent; scrollbar-width: thin; } @media (min-width: 1280px) { .tool-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } } @media (max-width: 1199px) { :root { --sidebar-expanded: 220px; } .home-content { padding-inline: 28px; } .quick-links__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } } @media (prefers-reduced-motion: reduce) { *, *::before, *::after { scroll-behavior: auto !important; transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; } }