Files
pokopiawiki.tootaio.com/frontend/src/styles/main.css
xiaomai 5b6b141602 feat(ui): support single selection in TagsSelect
Render single value instead of tags when multiple is false
Update inline-row CSS selectors to use direct child combinator
2026-04-30 17:41:52 +08:00

1483 lines
26 KiB
CSS

:root {
color-scheme: light;
--pokemon-yellow: #ffcb05;
--pokemon-yellow-soft: #ffe46b;
--pokemon-blue: #2a75bb;
--pokemon-blue-deep: #003a70;
--pokemon-red: #ee1515;
--pokemon-red-deep: #cc0000;
--pokeball-black: #202124;
--pokeball-white: #f7f8fb;
--bg: #f2f5fa;
--bg-alt: #eaf1fb;
--surface: #ffffff;
--surface-raised: #ffffff;
--surface-soft: #f8fafd;
--ink: #151923;
--ink-soft: #354052;
--muted: #687487;
--line: #d8deea;
--line-strong: #1f2a3b;
--focus: #0b63ce;
--success: #2eb872;
--warning: #ffb800;
--danger: #df2f2f;
--radius-card: 8px;
--radius-control: 8px;
--radius-small: 6px;
--shadow-control: 0 3px 0 var(--line-strong);
--shadow-soft: 0 8px 22px rgba(23, 35, 54, 0.09);
--shadow-raised: 0 14px 32px rgba(23, 35, 54, 0.13);
--container: 1240px;
--font-sans:
Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei",
sans-serif;
--font-display: "Arial Rounded MT Bold", "Nunito", "Avenir Next Rounded", var(--font-sans);
color: var(--ink);
background: var(--bg);
font-family: var(--font-sans);
font-synthesis: none;
text-rendering: optimizeLegibility;
}
* {
box-sizing: border-box;
}
html {
scroll-behavior: smooth;
scrollbar-gutter: stable;
}
@supports not (scrollbar-gutter: stable) {
html {
overflow-y: scroll;
}
}
body {
min-width: 320px;
margin: 0;
color: var(--ink);
background:
linear-gradient(90deg, rgba(42, 117, 187, 0.08) 1px, transparent 1px) 0 0 / 32px 32px,
linear-gradient(rgba(42, 117, 187, 0.08) 1px, transparent 1px) 0 0 / 32px 32px,
linear-gradient(180deg, var(--bg) 0%, var(--bg-alt) 100%);
}
a {
color: inherit;
text-decoration: none;
}
button,
input,
select,
textarea {
font: inherit;
}
button {
border: 0;
}
img,
svg {
display: block;
max-width: 100%;
}
:focus-visible {
outline: 3px solid var(--focus);
outline-offset: 3px;
}
.app-shell {
min-height: 100vh;
}
.container {
width: min(100%, var(--container));
margin: 0 auto;
padding: 0 24px;
}
.site-header {
position: sticky;
top: 0;
z-index: 50;
border-bottom: 1px solid rgba(31, 42, 59, 0.12);
background: color-mix(in srgb, var(--surface) 88%, transparent);
backdrop-filter: blur(18px);
}
.top-nav {
min-height: 70px;
display: grid;
grid-template-columns: auto minmax(0, 1fr) auto;
align-items: center;
gap: 22px;
}
.brand-lockup {
min-width: 216px;
display: inline-flex;
align-items: center;
gap: 12px;
}
.pokemon-word {
display: inline-block;
color: var(--pokemon-yellow);
font-family: var(--font-display);
font-size: 28px;
font-weight: 900;
line-height: 0.9;
-webkit-text-stroke: 2px var(--pokemon-blue-deep);
text-shadow: 2px 3px 0 var(--pokemon-blue);
}
.brand-subtitle {
display: block;
margin-top: 2px;
color: var(--muted);
font-size: 12px;
font-weight: 800;
text-transform: uppercase;
}
.nav-links {
display: flex;
justify-content: center;
gap: 4px;
overflow-x: auto;
}
.nav-links a {
min-height: 38px;
display: inline-flex;
align-items: center;
justify-content: center;
padding: 8px 10px;
border-radius: var(--radius-control);
color: var(--ink-soft);
font-size: 14px;
font-weight: 850;
white-space: nowrap;
}
.nav-links a:hover {
background: rgba(255, 203, 5, 0.24);
color: var(--ink);
}
.nav-links a.router-link-active {
background: var(--pokemon-blue);
color: #ffffff;
}
.auth-actions {
display: flex;
align-items: center;
justify-content: flex-end;
gap: 8px;
}
.auth-user {
max-width: 180px;
overflow: hidden;
color: var(--ink-soft);
font-size: 14px;
font-weight: 850;
text-overflow: ellipsis;
white-space: nowrap;
}
.page {
position: relative;
--page-padding-x: 24px;
width: min(100%, var(--container));
margin: 0 auto;
padding: 30px var(--page-padding-x) 58px;
}
.page-stack {
position: relative;
display: grid;
gap: 18px;
}
.page-header {
display: flex;
align-items: end;
justify-content: space-between;
gap: 16px;
}
.page-header__copy {
display: grid;
gap: 8px;
min-width: 0;
}
.page-header__actions {
display: flex;
flex-wrap: wrap;
justify-content: flex-end;
gap: 8px;
}
.page-kicker {
display: inline-flex;
align-items: center;
gap: 8px;
width: fit-content;
color: var(--pokemon-blue);
font-size: 13px;
font-weight: 900;
text-transform: uppercase;
}
.page-kicker::before {
content: "";
width: 18px;
height: 18px;
border: 3px solid var(--line-strong);
border-radius: 50%;
background:
linear-gradient(to bottom, var(--pokemon-red) 0 44%, var(--line-strong) 44% 56%, var(--surface) 56% 100%);
}
.page-title {
margin: 0;
color: var(--ink);
font-family: var(--font-display);
font-size: 42px;
font-weight: 950;
line-height: 1.08;
}
.page-subtitle {
margin: 0;
color: var(--ink-soft);
}
.pokeball-mark {
position: relative;
width: var(--ball-size, 34px);
height: var(--ball-size, 34px);
display: inline-block;
flex: 0 0 auto;
border: calc(var(--ball-size, 34px) * 0.07) solid var(--pokeball-black);
border-radius: 50%;
background:
linear-gradient(
to bottom,
var(--pokemon-red) 0 45%,
var(--pokeball-black) 45% 55%,
var(--pokeball-white) 55% 100%
);
box-shadow: inset 0 4px 0 rgba(255, 255, 255, 0.45), 0 3px 0 rgba(0, 0, 0, 0.18);
}
.pokeball-mark::after {
content: "";
position: absolute;
inset: 50% auto auto 50%;
width: calc(var(--ball-size, 34px) * 0.34);
height: calc(var(--ball-size, 34px) * 0.34);
transform: translate(-50%, -50%);
border: calc(var(--ball-size, 34px) * 0.055) solid var(--pokeball-black);
border-radius: 50%;
background: var(--pokeball-white);
box-shadow: inset 0 0 0 calc(var(--ball-size, 34px) * 0.055) #dfe5ef;
}
.ui-button,
.primary-button,
.link-button,
.plain-button,
.row-actions button,
.inline-row > button,
.appearance-row__delete {
--btn-bg: var(--surface);
--btn-fg: var(--ink);
--btn-border: var(--line-strong);
min-height: 42px;
width: fit-content;
display: inline-flex;
align-items: center;
justify-content: center;
gap: 8px;
padding: 9px 13px;
border: 2px solid var(--btn-border);
border-radius: var(--radius-control);
background: var(--btn-bg);
color: var(--btn-fg);
box-shadow: var(--shadow-control);
font-weight: 900;
line-height: 1.1;
cursor: pointer;
transition:
transform 0.14s ease,
box-shadow 0.14s ease,
background 0.14s ease,
border-color 0.14s ease;
white-space: nowrap;
}
.ui-button:hover,
.primary-button:hover,
.link-button:hover,
.plain-button:hover,
.row-actions button:hover,
.inline-row > button:hover,
.appearance-row__delete:hover {
transform: translateY(-2px);
box-shadow: 0 5px 0 var(--line-strong);
}
.ui-button:active,
.primary-button:active,
.link-button:active,
.plain-button:active,
.row-actions button:active,
.inline-row > button:active,
.appearance-row__delete:active {
transform: translateY(2px);
box-shadow: 0 1px 0 var(--line-strong);
}
.ui-button--primary,
.primary-button {
--btn-bg: var(--pokemon-yellow);
--btn-fg: #172036;
}
.ui-button--blue,
.link-button {
--btn-bg: var(--pokemon-blue);
--btn-fg: #ffffff;
}
.ui-button--red {
--btn-bg: var(--pokemon-red);
--btn-fg: #ffffff;
}
.ui-button--ghost,
.plain-button,
.row-actions button,
.inline-row > button,
.appearance-row__delete {
--btn-bg: var(--surface);
--btn-border: var(--line);
box-shadow: none;
}
.ui-button--small {
min-height: 36px;
padding: 7px 10px;
font-size: 14px;
box-shadow: 0 2px 0 var(--line-strong);
}
button:disabled,
.ui-button:disabled,
.primary-button:disabled,
.link-button:disabled,
.plain-button:disabled {
cursor: not-allowed;
opacity: 0.54;
transform: none;
box-shadow: 0 2px 0 var(--line);
}
.filter-panel,
.toolbar {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
gap: 14px;
padding: 16px;
border: 2px solid var(--line-strong);
border-radius: var(--radius-card);
background: var(--surface);
box-shadow: var(--shadow-control);
}
.field {
display: grid;
gap: 7px;
align-content: start;
}
.field label,
.field-label {
color: var(--ink-soft);
font-size: 14px;
font-weight: 850;
}
.field input,
.field select,
.tags-select__search {
width: 100%;
min-height: 44px;
padding: 10px 12px;
border: 2px solid var(--line);
border-radius: var(--radius-control);
background: var(--surface);
color: var(--ink);
transition:
border-color 0.14s ease,
box-shadow 0.14s ease;
}
.field input:focus,
.field select:focus,
.tags-select__search:focus {
border-color: var(--pokemon-blue);
box-shadow: 0 0 0 4px rgba(42, 117, 187, 0.16);
outline: none;
}
.tags-select {
position: relative;
width: 100%;
min-width: 0;
}
.tags-select__trigger {
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
width: 100%;
min-height: 44px;
padding: 7px 10px;
border: 2px solid var(--line);
border-radius: var(--radius-control);
background: var(--surface);
color: var(--ink);
text-align: left;
cursor: pointer;
}
.tags-select__trigger.open {
border-color: var(--pokemon-blue);
box-shadow: 0 0 0 4px rgba(42, 117, 187, 0.16);
}
.tags-select__selected {
display: flex;
flex: 1 1 auto;
flex-wrap: wrap;
gap: 6px;
min-width: 0;
}
.tags-select--single .tags-select__trigger {
padding: 10px 12px;
}
.tags-select--single .tags-select__selected {
align-items: center;
}
.tags-select__single-value {
display: block;
min-width: 0;
overflow: hidden;
color: var(--ink);
text-overflow: ellipsis;
white-space: nowrap;
}
.tags-select__tag {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 6px;
min-height: 28px;
padding: 4px 8px;
border: 1px solid rgba(42, 117, 187, 0.28);
border-radius: 999px;
background: rgba(42, 117, 187, 0.1);
color: var(--pokemon-blue-deep);
font-size: 13px;
font-weight: 850;
}
.tags-select__remove {
min-width: 18px;
min-height: 18px;
display: inline-flex;
align-items: center;
justify-content: center;
border-radius: 999px;
color: var(--ink-soft);
cursor: pointer;
}
.tags-select__remove:hover {
background: rgba(42, 117, 187, 0.14);
}
.tags-select__placeholder {
color: var(--muted);
}
.tags-select__arrow {
flex: 0 0 auto;
color: var(--muted);
font-size: 18px;
line-height: 1;
}
.tags-select__dropdown {
position: absolute;
top: calc(100% + 6px);
left: 0;
z-index: 40;
display: grid;
gap: 8px;
width: 100%;
min-width: 240px;
padding: 8px;
border: 2px solid var(--line-strong);
border-radius: var(--radius-card);
background: var(--surface);
box-shadow: var(--shadow-raised);
}
.tags-select__options {
display: grid;
max-height: 240px;
overflow: auto;
}
.tags-select__option {
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
width: 100%;
min-height: 40px;
padding: 8px 10px;
border: 0;
border-radius: var(--radius-small);
background: transparent;
color: var(--ink);
text-align: left;
cursor: pointer;
}
.tags-select__option:hover,
.tags-select__option.active,
.tags-select__option.selected {
background: rgba(255, 203, 5, 0.22);
color: var(--pokemon-blue-deep);
}
.tags-select__option.active {
box-shadow: inset 0 0 0 2px rgba(42, 117, 187, 0.2);
}
.tags-select__option.selected {
font-weight: 850;
}
.tags-select__create {
border-top: 1px solid var(--line);
border-radius: 0;
color: var(--pokemon-blue);
font-weight: 850;
}
.tags-select__option:disabled {
cursor: not-allowed;
opacity: 0.45;
}
.tags-select__state {
flex: 0 0 auto;
color: var(--pokemon-blue);
font-size: 12px;
font-weight: 850;
}
.tags-select__empty {
margin: 0;
padding: 8px 10px;
color: var(--muted);
font-size: 13px;
}
.segmented {
display: inline-flex;
flex-wrap: wrap;
width: fit-content;
gap: 4px;
padding: 4px;
border: 2px solid var(--line);
border-radius: var(--radius-control);
background: var(--surface-soft);
}
.segmented button {
min-width: 52px;
min-height: 34px;
padding: 6px 10px;
border-radius: var(--radius-small);
background: transparent;
color: var(--ink-soft);
font-weight: 850;
cursor: pointer;
}
.segmented button.active {
background: var(--pokemon-blue);
color: #ffffff;
}
.tabs {
display: flex;
flex-wrap: wrap;
gap: 8px;
}
.tabs > button {
min-height: 42px;
padding: 9px 13px;
border: 2px solid var(--line);
border-radius: var(--radius-control);
background: var(--surface);
color: var(--ink-soft);
font-weight: 900;
cursor: pointer;
}
.tabs > button.active {
border-color: var(--line-strong);
background: var(--pokemon-yellow);
color: #172036;
box-shadow: 0 2px 0 var(--line-strong);
}
.tabs--component {
display: grid;
gap: 14px;
}
.tab-list {
display: flex;
flex-wrap: wrap;
gap: 6px;
border-bottom: 2px solid var(--line);
}
.tab-button {
min-height: 42px;
padding: 9px 13px;
border-bottom: 3px solid transparent;
border-radius: var(--radius-control) var(--radius-control) 0 0;
background: transparent;
color: var(--ink-soft);
font-weight: 900;
cursor: pointer;
}
.tab-button[aria-selected="true"] {
border-color: var(--pokemon-yellow);
background: var(--surface);
color: var(--pokemon-blue-deep);
}
.skeleton {
display: grid;
gap: 10px;
}
.skeleton-line,
.skeleton-box {
display: block;
background: linear-gradient(90deg, var(--line), var(--surface), var(--line));
background-size: 200% 100%;
animation: shimmer 1.4s linear infinite;
}
.skeleton-line {
height: 14px;
border-radius: 999px;
}
.skeleton-box {
height: 128px;
border-radius: var(--radius-card);
}
.tab-list--skeleton {
padding-bottom: 0;
}
.skeleton-tab {
border-radius: var(--radius-control) var(--radius-control) 0 0;
}
.filter-panel--skeleton {
pointer-events: none;
}
.entity-card--skeleton {
pointer-events: none;
}
.skeleton-entity-mark {
border-radius: var(--radius-control);
box-shadow: 0 3px 0 var(--line);
}
.skeleton-chip-row {
display: flex;
flex-wrap: wrap;
gap: 6px;
}
.skeleton-chip {
height: 28px;
}
.page-header--skeleton {
pointer-events: none;
}
.skeleton-detail-section {
pointer-events: none;
}
.skeleton-detail-section .detail-section__body {
gap: 14px;
}
.skeleton-row-list li {
min-height: 43px;
}
.skeleton-appearance-row {
display: grid;
grid-template-columns: max-content minmax(0, 1fr);
gap: 12px;
}
.skeleton-summary {
display: grid;
gap: 6px;
width: 100%;
}
.skeleton-summary div {
display: grid;
grid-template-columns: 72px minmax(0, 1fr);
gap: 8px;
}
.skeleton-form-stack {
display: grid;
gap: 14px;
}
.skeleton-auth-state {
display: grid;
gap: 12px;
}
@keyframes shimmer {
to {
background-position: -200% 0;
}
}
.entity-grid,
.grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
gap: 16px;
}
.entity-card {
min-height: 164px;
display: grid;
grid-template-columns: auto minmax(0, 1fr);
gap: 12px;
padding: 16px;
border: 2px solid var(--line-strong);
border-radius: var(--radius-card);
background: var(--surface);
box-shadow: var(--shadow-control);
color: var(--ink);
}
.entity-card--link {
transition:
transform 0.16s ease,
box-shadow 0.16s ease,
border-color 0.16s ease;
}
.entity-card--link:hover {
transform: translateY(-2px);
border-color: var(--pokemon-blue);
box-shadow: 0 5px 0 var(--line-strong);
}
.entity-card__mark {
width: 42px;
height: 42px;
display: inline-grid;
place-items: center;
border: 2px solid var(--line-strong);
border-radius: var(--radius-control);
background: var(--pokemon-yellow);
box-shadow: 0 3px 0 var(--line-strong);
color: #172036;
font-family: var(--font-display);
font-weight: 950;
}
.entity-card__content {
display: grid;
align-content: start;
gap: 10px;
min-width: 0;
}
.entity-card__title {
color: var(--ink);
font-family: var(--font-display);
font-size: 21px;
font-weight: 950;
line-height: 1.12;
overflow-wrap: anywhere;
}
.entity-card__subtitle,
.meta-line {
margin: 0;
color: var(--muted);
}
.edit-meta {
margin: 0;
color: var(--muted);
font-size: 13px;
font-weight: 750;
}
.config-flag {
display: inline-flex;
align-items: center;
min-height: 24px;
margin-left: 8px;
padding: 3px 7px;
border: 1px solid rgba(42, 117, 187, 0.24);
border-radius: var(--radius-small);
background: var(--surface-soft);
color: var(--pokemon-blue-deep);
font-size: 12px;
font-weight: 850;
}
.chips {
display: flex;
flex-wrap: wrap;
gap: 6px;
}
.chip {
display: inline-flex;
align-items: center;
min-height: 28px;
padding: 4px 8px;
border: 1px solid rgba(42, 117, 187, 0.28);
border-radius: 999px;
background: rgba(42, 117, 187, 0.1);
color: var(--pokemon-blue-deep);
font-size: 13px;
font-weight: 800;
}
.detail-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 16px;
}
.detail-section {
display: grid;
gap: 12px;
padding: 18px;
border: 1px solid var(--line);
border-radius: var(--radius-card);
background: var(--surface);
box-shadow: var(--shadow-soft);
}
.detail-section__header,
.detail-section > h2 {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
}
.detail-section h2 {
margin: 0;
color: var(--ink);
font-family: var(--font-display);
font-size: 21px;
font-weight: 950;
line-height: 1.12;
}
.section-subtitle {
margin: 0;
color: var(--ink-soft);
font-size: 16px;
font-weight: 900;
}
.detail-section__body {
display: grid;
gap: 12px;
}
.detail-section a:not(.ui-button) {
color: var(--pokemon-blue-deep);
font-weight: 850;
}
.row-list {
display: grid;
gap: 0;
margin: 0;
padding: 0;
list-style: none;
}
.row-list li {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
padding: 11px 0;
border-bottom: 1px solid var(--line);
}
.row-list li:last-child {
border-bottom: 0;
}
.skill-drop-summary li {
align-items: flex-start;
}
.skill-drop-summary .chips {
justify-content: flex-end;
}
.appearance-list li {
display: grid;
grid-template-columns: max-content minmax(0, 1fr);
align-items: start;
justify-content: stretch;
}
.appearance-name {
white-space: nowrap;
}
.appearance-summary {
display: grid;
gap: 4px;
width: 100%;
margin: 0;
color: var(--muted);
text-align: left;
}
.appearance-summary div {
display: grid;
grid-template-columns: 72px minmax(0, 1fr);
gap: 8px;
}
.appearance-summary dt,
.appearance-summary dd {
margin: 0;
}
.appearance-summary dt {
color: var(--ink-soft);
font-weight: 850;
}
.status-message {
position: absolute;
right: 0;
left: 0;
z-index: 80;
display: flex;
align-items: start;
gap: 10px;
width: auto;
margin: 0;
padding: 14px;
border: 1px solid var(--status-line, var(--line));
border-left: 6px solid var(--status-accent, var(--pokemon-blue));
border-radius: var(--radius-card);
background: var(--status-bg, var(--surface));
box-shadow: var(--shadow-raised);
color: var(--ink-soft);
font-weight: 800;
pointer-events: none;
opacity: 1;
transform: translateY(0);
visibility: visible;
transition:
opacity 0.18s ease,
transform 0.18s ease,
visibility 0.18s ease;
}
.page > .status-message {
right: var(--page-padding-x);
left: var(--page-padding-x);
}
.status-message--hidden {
opacity: 0;
transform: translateY(-6px);
visibility: hidden;
}
.status-message::before {
content: "";
width: 12px;
height: 12px;
flex: 0 0 auto;
margin-top: 6px;
border-radius: 50%;
background: var(--status-accent, var(--pokemon-blue));
}
.status-message--success {
--status-accent: var(--success);
--status-line: color-mix(in srgb, var(--success) 38%, var(--line));
--status-bg: color-mix(in srgb, var(--success) 10%, var(--surface));
}
.status-message--warning {
--status-accent: var(--warning);
--status-line: color-mix(in srgb, var(--warning) 42%, var(--line));
--status-bg: color-mix(in srgb, var(--warning) 12%, var(--surface));
}
.status-message--danger {
--status-accent: var(--danger);
--status-line: color-mix(in srgb, var(--danger) 38%, var(--line));
--status-bg: color-mix(in srgb, var(--danger) 10%, var(--surface));
}
.status {
margin: 0;
padding: 14px;
border: 1px solid var(--line);
border-radius: var(--radius-card);
background: var(--surface);
color: var(--muted);
}
.auth-page {
display: grid;
justify-items: center;
padding: 24px 0;
}
.auth-panel {
position: relative;
width: min(480px, 100%);
display: grid;
gap: 18px;
padding: 22px;
border: 2px solid var(--line-strong);
border-radius: var(--radius-card);
background: var(--surface);
box-shadow: var(--shadow-control);
}
.auth-panel .page-header {
display: block;
}
.auth-panel .page-title {
font-size: 34px;
}
.auth-form {
position: relative;
display: grid;
gap: 14px;
}
.auth-switch {
margin: 0;
color: var(--muted);
}
.auth-switch a {
color: var(--pokemon-blue-deep);
font-weight: 900;
}
.auth-message {
margin: 0;
padding: 10px 12px;
border: 1px solid color-mix(in srgb, var(--success) 38%, var(--line));
border-radius: var(--radius-card);
background: color-mix(in srgb, var(--success) 10%, var(--surface));
color: var(--ink-soft);
font-weight: 800;
}
.auth-message.error {
border-color: color-mix(in srgb, var(--danger) 38%, var(--line));
background: color-mix(in srgb, var(--danger) 10%, var(--surface));
}
.admin-layout {
display: grid;
grid-template-columns: minmax(320px, 420px) minmax(0, 1fr);
gap: 16px;
align-items: start;
}
.form-actions,
.row-actions,
.check-row,
.inline-row,
.appearance-row {
display: flex;
gap: 8px;
}
.form-actions,
.check-row {
flex-wrap: wrap;
align-items: center;
}
.row-actions {
flex: 0 0 auto;
flex-wrap: wrap;
justify-content: flex-end;
}
.row-actions button,
.inline-row > button,
.appearance-row__delete {
min-height: 34px;
padding: 6px 10px;
font-size: 14px;
}
.inline-row {
align-items: center;
}
.inline-row > .tags-select {
flex: 1 1 180px;
min-width: 0;
}
.inline-row > select {
flex: 1;
}
.inline-row > input {
width: 90px;
}
.skill-drop-list {
display: grid;
gap: 10px;
}
.skill-drop-row {
display: grid;
gap: 8px;
padding: 12px;
border: 1px solid var(--line);
border-radius: var(--radius-card);
background: var(--surface-soft);
}
.skill-drop-row label {
margin: 0;
}
.check-row label {
display: inline-flex;
align-items: center;
gap: 7px;
min-height: 36px;
color: var(--ink-soft);
font-weight: 850;
cursor: pointer;
}
.check-row input {
width: 18px;
height: 18px;
accent-color: var(--pokemon-blue);
}
.appearance-row {
display: grid;
grid-template-columns: 1fr;
gap: 12px;
padding: 12px;
border: 1px solid var(--line);
border-radius: var(--radius-card);
background: var(--surface-soft);
}
.appearance-row__rarity input {
min-width: 64px;
}
.appearance-row__main {
display: grid;
grid-template-columns: minmax(260px, 1.2fr) minmax(240px, 1fr) minmax(180px, 0.9fr) 82px max-content;
gap: 12px;
align-items: start;
}
.appearance-row__pokemon,
.appearance-row__maps,
.appearance-row__rarity,
.appearance-row__main .switch-group {
min-width: 0;
width: 100%;
}
.appearance-row__rarity input {
width: 100%;
}
.appearance-row__delete {
align-self: end;
justify-self: end;
min-height: 32px;
padding: 5px 9px;
font-size: 13px;
}
.appearance-row .tags-select,
.appearance-row .tags-select__trigger {
width: 100%;
}
.switch-group {
min-width: 0;
min-inline-size: 0;
display: grid;
gap: 7px;
margin: 0;
padding: 0;
border: 0;
}
.switch-group legend {
padding: 0;
color: var(--ink-soft);
font-size: 14px;
font-weight: 850;
}
.switch-group__options {
display: flex;
flex-wrap: wrap;
gap: 8px 12px;
align-items: center;
}
.switch-control {
position: relative;
display: inline-flex;
align-items: center;
gap: 9px;
min-height: 44px;
color: var(--ink-soft);
font-weight: 850;
cursor: pointer;
user-select: none;
}
.switch-control--stacked {
min-width: 62px;
align-items: center;
flex-direction: column;
gap: 6px;
}
.switch-control__label {
color: var(--ink-soft);
font-size: 13px;
line-height: 1.2;
text-align: center;
overflow-wrap: anywhere;
}
.switch-control input {
position: absolute;
inline-size: 1px;
block-size: 1px;
min-width: 0;
margin: 0;
opacity: 0;
}
.switch-track {
position: relative;
width: 48px;
height: 28px;
flex: 0 0 auto;
border: 2px solid var(--line-strong);
border-radius: 999px;
background: var(--line);
transition: background 0.16s ease;
}
.switch-track::after {
content: "";
position: absolute;
top: 2px;
left: 2px;
width: 20px;
height: 20px;
border-radius: 50%;
background: var(--surface);
box-shadow: 0 2px 0 rgba(0, 0, 0, 0.2);
transition: transform 0.16s ease;
}
.switch-control input:focus-visible + .switch-track {
box-shadow: 0 0 0 4px rgba(42, 117, 187, 0.16);
}
.switch-control input:checked + .switch-track {
background: var(--pokemon-blue);
}
.switch-control input:checked + .switch-track::after {
transform: translateX(20px);
}
@media (max-width: 900px) {
.top-nav {
grid-template-columns: 1fr;
gap: 12px;
padding-top: 14px;
padding-bottom: 14px;
}
.brand-lockup,
.auth-actions,
.nav-links {
justify-content: flex-start;
min-width: 0;
}
.nav-links {
width: 100%;
}
.auth-actions {
flex-wrap: wrap;
}
.page-header {
align-items: start;
flex-direction: column;
}
.page-header__actions {
justify-content: flex-start;
}
.detail-grid,
.admin-layout {
grid-template-columns: 1fr;
}
.appearance-row__main {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
}
@media (max-width: 640px) {
.container,
.page {
--page-padding-x: 16px;
padding-right: var(--page-padding-x);
padding-left: var(--page-padding-x);
}
.page {
padding-top: 22px;
padding-bottom: 44px;
}
.page-title {
font-size: 32px;
}
.pokemon-word {
font-size: 25px;
}
.filter-panel,
.toolbar,
.entity-grid,
.grid {
grid-template-columns: 1fr;
}
.entity-card {
grid-template-columns: 1fr;
}
.appearance-list li {
grid-template-columns: 1fr;
}
.appearance-summary div {
grid-template-columns: 68px minmax(0, 1fr);
}
.inline-row {
align-items: stretch;
flex-direction: column;
}
.inline-row > input,
.inline-row > .tags-select {
width: 100%;
}
.appearance-row__main {
grid-template-columns: 1fr;
}
}