@import "tailwindcss"; @theme { --font-sans: "Avenir Next", Avenir, "Segoe UI", "PingFang SC", "Hiragino Sans GB", sans-serif; --font-serif: Iowan Old Style, Baskerville, "Times New Roman", serif; --font-mono: "SFMono-Regular", Consolas, "Liberation Mono", monospace; } :root { color-scheme: light; --canvas: #f2f0e9; --paper: #f7f5ef; --paper-elevated: #fcfbf7; --soft: #ece9e0; --ink: #18201e; --muted-strong: #626a65; --muted: #858b86; --line: rgba(29, 41, 37, 0.11); --line-strong: rgba(29, 41, 37, 0.2); --accent: #286b59; --success: #3f8068; --danger: #b34c42; --token-color-0: #167d74; --token-color-1: #3669b3; --token-color-2: #7355a5; --token-color-3: #ad4f70; --token-color-4: #a55f20; --token-color-5: #398358; --token-color-6: #2f718d; --token-color-7: #8b5a3c; --shadow-soft: 0 18px 60px rgba(44, 49, 42, 0.08); background: var(--canvas); font-synthesis: none; text-rendering: optimizeLegibility; } :root[data-theme="dark"] { color-scheme: dark; --canvas: #0e1012; --paper: #15181b; --paper-elevated: #1b1f23; --soft: #20252a; --ink: #f0f2f4; --muted-strong: #aab1b9; --muted: #747d86; --line: rgba(235, 240, 245, 0.09); --line-strong: rgba(235, 240, 245, 0.16); --accent: #72bca7; --success: #70b99b; --danger: #ed8f87; --token-color-0: #63b3ed; --token-color-1: #8ba5ff; --token-color-2: #b699f2; --token-color-3: #e593b0; --token-color-4: #e6ad70; --token-color-5: #79c6a3; --token-color-6: #67c5cf; --token-color-7: #c99a7a; --shadow-soft: 0 20px 70px rgba(0, 0, 0, 0.3); } * { box-sizing: border-box; } html { min-width: 320px; background: var(--canvas); scroll-behavior: smooth; } body { min-width: 320px; min-height: 100vh; margin: 0; background: radial-gradient(circle at 11% 6%, color-mix(in srgb, var(--accent) 8%, transparent), transparent 28rem), radial-gradient(circle at 88% 32%, color-mix(in srgb, #b79a62 7%, transparent), transparent 30rem), var(--canvas); color: var(--ink); font-family: var(--font-sans); } :root[data-theme="dark"] body { background: radial-gradient(circle at 12% 2%, rgba(79, 105, 136, 0.09), transparent 30rem), radial-gradient(circle at 88% 30%, rgba(119, 88, 119, 0.045), transparent 32rem), var(--canvas); } button, input, textarea { font: inherit; } button, a, input, textarea, summary { -webkit-tap-highlight-color: transparent; } button:focus-visible, a:focus-visible, input:focus-visible, textarea:focus-visible, summary:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; } ::selection { background: color-mix(in srgb, var(--accent) 24%, transparent); } .surface { border: 1px solid var(--line); border-radius: 17px; background: color-mix(in srgb, var(--paper) 97%, transparent); box-shadow: 0 8px 30px rgba(44, 49, 42, 0.055); backdrop-filter: blur(16px); } .eyebrow { color: var(--accent); font-size: 10px; font-weight: 700; letter-spacing: 0.2em; line-height: 1.4; text-transform: uppercase; } .section-title { color: var(--ink); font-size: 17px; font-weight: 650; letter-spacing: -0.025em; } .field-label { color: var(--muted-strong); font-size: 11px; font-weight: 650; letter-spacing: 0.04em; } .text-field { width: 100%; border: 1px solid var(--line); border-radius: 15px; background: var(--soft); color: var(--ink); outline: none; transition: border-color 160ms ease, background-color 160ms ease, box-shadow 160ms ease; } .text-field:hover { border-color: var(--line-strong); } .text-field:focus { border-color: color-mix(in srgb, var(--accent) 55%, transparent); background: var(--paper-elevated); box-shadow: 0 0 0 4px color-mix(in srgb, var(--accent) 9%, transparent); } .primary-button, .quiet-button, .icon-button { display: inline-flex; align-items: center; gap: 7px; border: 0; cursor: pointer; font-weight: 650; transition: transform 150ms ease, background-color 150ms ease, color 150ms ease, opacity 150ms ease; } .primary-button { border-radius: 11px; background: var(--ink); color: var(--paper); font-size: 12px; letter-spacing: 0.01em; } .primary-button:hover:not(:disabled) { transform: translateY(-1px); background: var(--accent); } .primary-button:disabled, .quiet-button:disabled { cursor: not-allowed; opacity: 0.45; } .quiet-button { border: 1px solid var(--line); border-radius: 10px; background: transparent; padding: 7px 10px; color: var(--muted-strong); font-size: 11px; } .quiet-button:hover:not(:disabled) { border-color: var(--line-strong); background: var(--soft); color: var(--ink); } .icon-button { width: 39px; height: 39px; place-items: center; justify-content: center; border: 1px solid var(--line); border-radius: 13px; background: color-mix(in srgb, var(--paper) 88%, transparent); color: var(--muted-strong); box-shadow: 0 7px 24px rgba(20, 32, 27, 0.04); } .icon-button:hover { transform: translateY(-1px); color: var(--ink); } .status-pill, .format-pill, .metric-chip { display: inline-flex; align-items: center; border: 1px solid var(--line); border-radius: 999px; white-space: nowrap; } .status-pill { gap: 5px; padding: 5px 8px; color: var(--success); font-size: 9px; font-weight: 700; letter-spacing: 0.04em; } .format-pill { padding: 5px 9px; background: var(--soft); color: var(--muted-strong); font-family: var(--font-mono); font-size: 9px; } .metric-chip { gap: 4px; padding: 7px 10px; background: var(--soft); color: var(--muted); font-size: 10px; letter-spacing: 0.04em; text-transform: uppercase; } .metric-chip strong { color: var(--ink); font-family: var(--font-mono); font-weight: 650; } .stat-card { display: flex; min-height: 82px; flex-direction: column; justify-content: space-between; border: 1px solid var(--line); border-radius: 17px; background: var(--soft); padding: 13px; } .stat-card span { color: var(--muted); font-size: 9px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; } .stat-card strong { color: var(--ink); font-family: var(--font-mono); font-size: 22px; font-weight: 550; letter-spacing: -0.04em; } .token-output-header { border-bottom: 1px solid var(--line); background: linear-gradient(180deg, color-mix(in srgb, var(--paper-elevated) 44%, transparent), transparent); } .token-stage { border: 1px solid var(--line); border-radius: 14px; background: linear-gradient(180deg, color-mix(in srgb, var(--soft) 32%, transparent), transparent 90px), color-mix(in srgb, var(--paper-elevated) 68%, transparent); padding: 14px; box-shadow: inset 0 1px 3px rgba(25, 31, 28, 0.045); } .token-chip { --token-color: var(--token-color-0); position: relative; display: inline-flex; min-width: 72px; min-height: 62px; max-width: 100%; flex-direction: column; overflow: hidden; border: 1px solid color-mix(in srgb, var(--token-color) 32%, var(--line)); border-radius: 10px; background: linear-gradient( 145deg, color-mix(in srgb, var(--token-color) 9%, var(--paper-elevated)), color-mix(in srgb, var(--token-color) 5%, var(--paper-elevated)) ); box-shadow: 0 4px 12px rgba(20, 28, 24, 0.055), inset 0 1px 0 color-mix(in srgb, white 8%, transparent); transition: transform 150ms ease, box-shadow 150ms ease, border-color 150ms ease; } .token-chip:hover { z-index: 1; transform: translateY(-2px); border-color: color-mix(in srgb, var(--token-color) 58%, var(--line)); background: color-mix(in srgb, var(--token-color) 14%, var(--paper-elevated)); box-shadow: 0 10px 24px color-mix(in srgb, var(--token-color) 13%, transparent), inset 0 1px 0 color-mix(in srgb, white 10%, transparent); } .token-chip-special { --token-color: var(--accent) !important; border-color: color-mix(in srgb, var(--accent) 48%, var(--line)); } .token-text { min-width: 1ch; flex: 1; overflow-wrap: anywhere; padding: 12px 13px 5px; color: var(--ink); font-family: var(--font-mono); font-size: 14px; font-weight: 650; letter-spacing: -0.015em; line-height: 1.35; white-space: pre-wrap; } .token-id { width: 100%; padding: 2px 12px 9px; color: color-mix(in srgb, var(--token-color) 58%, var(--ink)); font-family: var(--font-mono); font-size: 10px; font-weight: 700; letter-spacing: 0.02em; line-height: 1; text-align: right; } .token-id::before { margin-right: 3px; content: "ID"; font-size: 8px; font-weight: 650; opacity: 0.58; } .token-map-row { display: flex; align-items: center; gap: 10px; margin-top: 15px; padding: 0 2px; } .token-map-label { flex-shrink: 0; color: var(--muted); font-size: 8px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; } .token-map { display: flex; height: 7px; min-width: 0; flex: 1; align-items: stretch; gap: 1px; overflow: hidden; border-radius: 999px; background: var(--soft); padding: 1px; } .token-map-segment { min-width: 1px; flex-basis: 0; border-radius: 1px; opacity: 0.58; } .toolbar-label { display: block; margin: 0 0 4px 2px; color: var(--muted-strong); font-size: 10px; font-weight: 650; } .toolbar-control { display: inline-flex; min-height: 46px; align-items: center; gap: 8px; border: 1px solid var(--line); border-radius: 12px; background: color-mix(in srgb, var(--paper-elevated) 96%, transparent); padding: 0 14px; color: var(--ink); box-shadow: 0 5px 18px rgba(25, 31, 28, 0.05); cursor: pointer; font-size: 12px; font-weight: 600; transition: border-color 150ms ease, box-shadow 150ms ease, transform 150ms ease; } .toolbar-control:hover { transform: translateY(-1px); border-color: var(--line-strong); box-shadow: 0 8px 24px rgba(25, 31, 28, 0.08); } .popover-panel { border: 1px solid var(--line); border-radius: 16px; background: var(--paper-elevated); box-shadow: 0 24px 70px rgba(27, 32, 29, 0.18); } .model-option { display: flex; width: 100%; align-items: center; gap: 10px; border: 0; border-radius: 11px; background: transparent; padding: 8px; cursor: pointer; transition: background-color 140ms ease; } .model-option:hover { background: var(--soft); } .settings-row { display: flex; min-height: 56px; align-items: center; justify-content: space-between; gap: 16px; border: 0; border-radius: 11px; background: transparent; padding: 8px 9px; color: var(--muted-strong); cursor: pointer; text-align: left; transition: background-color 140ms ease; } .settings-row:hover { background: var(--soft); } .settings-row strong, .settings-row small { display: block; } .settings-row strong { color: var(--ink); font-size: 11px; font-weight: 650; } .settings-row small { margin-top: 3px; color: var(--muted); font-size: 9px; } .toggle { position: relative; width: 36px; height: 20px; flex-shrink: 0; border-radius: 999px; background: var(--line-strong); transition: background-color 160ms ease; } .toggle::after { position: absolute; top: 2px; left: 2px; width: 16px; height: 16px; border-radius: 50%; background: white; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.18); content: ""; transition: transform 160ms ease; } .peer:checked ~ .toggle { background: var(--accent); } .peer:checked ~ .toggle::after { transform: translateX(16px); } .editor-shell { position: relative; overflow: hidden; border: 1px solid var(--line-strong); border-radius: 13px; background: color-mix(in srgb, var(--paper-elevated) 82%, transparent); transition: border-color 150ms ease, box-shadow 150ms ease; } .editor-shell:focus-within { border-color: color-mix(in srgb, var(--accent) 65%, transparent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 9%, transparent); } .mini-icon-button { display: inline-grid; width: 34px; height: 32px; place-items: center; border: 1px solid var(--line); border-radius: 9px; background: var(--paper-elevated); color: var(--muted-strong); cursor: pointer; transition: background-color 140ms ease, color 140ms ease, transform 140ms ease; } .mini-icon-button:hover:not(:disabled) { transform: translateY(-1px); background: var(--soft); color: var(--ink); } .mini-icon-button:disabled { cursor: not-allowed; opacity: 0.4; } .tokenize-button { display: inline-flex; min-height: 34px; align-items: center; gap: 7px; border: 1px solid color-mix(in srgb, var(--ink) 75%, transparent); border-radius: 9px; background: linear-gradient(145deg, color-mix(in srgb, var(--ink) 88%, #555), var(--ink)); padding: 0 14px; color: var(--paper); box-shadow: 0 5px 14px rgba(19, 24, 22, 0.16), inset 0 1px 0 rgba(255, 255, 255, 0.18); cursor: pointer; font-size: 11px; font-weight: 650; transition: transform 150ms ease, box-shadow 150ms ease, opacity 150ms ease; } .tokenize-button:hover:not(:disabled) { transform: translateY(-1px); box-shadow: 0 7px 18px rgba(19, 24, 22, 0.22); } .tokenize-button:disabled { cursor: not-allowed; opacity: 0.45; } .select-control { height: 32px; border: 1px solid var(--line); border-radius: 9px; background: var(--soft); padding: 0 28px 0 10px; color: var(--muted-strong); outline: none; cursor: pointer; font-size: 10px; transition: border-color 140ms ease, background-color 140ms ease, box-shadow 140ms ease; } .select-control:hover { border-color: var(--line-strong); background: var(--paper-elevated); } .select-control:focus-visible { border-color: color-mix(in srgb, var(--accent) 55%, transparent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 9%, transparent); } .detail-metric { display: flex; min-width: 0; align-items: center; gap: 13px; border-bottom: 1px solid var(--line); padding: 20px; } .detail-icon { display: grid; width: 46px; height: 46px; flex-shrink: 0; place-items: center; border: 1px solid var(--line); border-radius: 50%; background: var(--soft); color: var(--muted-strong); } .message-banner { display: flex; align-items: flex-start; gap: 9px; border: 1px solid; border-radius: 12px; padding: 10px 13px; font-size: 11px; } @media (min-width: 640px) { .detail-metric:nth-child(odd) { border-right: 1px solid var(--line); } } @media (min-width: 1024px) { .detail-metric { border-right: 1px solid var(--line); border-bottom: 0; } .detail-metric:last-child { border-right: 0; } } @keyframes loading { 0% { transform: translateX(-120%); } 50% { transform: translateX(180%); } 100% { transform: translateX(420%); } } @media (max-width: 640px) { .surface { border-radius: 15px; } .toolbar-control { min-height: 42px; padding: 0 11px; } } @media (prefers-reduced-motion: reduce) { *, *::before, *::after { scroll-behavior: auto !important; animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } }