/* ───────────────────────────────────────────────────────────── pico-shim.css — 미리보기 전용 (배포 대상 아님) 실제 앱은 Pico.css v2를 로드합니다. 폐쇄망 미리보기에서 외부 CDN 없이 화면을 재현하려고, app.css가 참조하는 --pico-* 변수 위에서 동작하는 최소 기본 스타일만 담았습니다. ───────────────────────────────────────────────────────────── */ *, *::before, *::after { box-sizing: border-box; } html { -webkit-text-size-adjust: 100%; } body { margin: 0; font-family: var(--pico-font-family, system-ui, sans-serif); font-size: 16px; line-height: var(--pico-line-height, 1.5); background: var(--pico-background-color); color: var(--pico-color); } .container { width: 100%; margin-inline: auto; padding-inline: 20px; } h1, h2, h3, h4 { margin: 0 0 0.4em; line-height: 1.2; } h1 { color: var(--pico-h1-color); } h2 { color: var(--pico-h2-color); } h3 { color: var(--pico-h3-color); } p { margin: 0 0 1rem; } a { color: var(--accent); } small { font-size: 0.8125em; } /* 폼 요소 */ input, button, select, textarea { font-family: inherit; font-size: 1rem; } input[type="search"], input[type="text"], input:not([type]) { display: block; width: 100%; padding: calc(var(--pico-form-element-spacing-vertical, 0.75rem)) 0.875rem; background: var(--pico-form-element-background-color, var(--surface)); color: var(--pico-form-element-color, var(--text)); border: 1px solid var(--pico-form-element-border-color, var(--border)); border-radius: var(--pico-border-radius, 7px); outline: none; transition: border-color 0.12s ease, box-shadow 0.12s ease; } input::placeholder { color: var(--text-dim); } input:focus { border-color: var(--accent); box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 22%, transparent); } /* 버튼 기본 (app.css가 세부를 오버라이드). 버튼 요소에서 --pico-background-color 등을 primary 로 "리셋"해 두면, app.css 의 .secondary/.ghost/.danger 가 이 변수를 덮어써서 실제 Pico처럼 동작. */ button, [role="button"] { display: inline-block; padding: 11px 18px; --pico-background-color: var(--pico-primary-background, var(--accent)); --pico-border-color: var(--pico-primary-border, var(--accent)); --pico-color: var(--pico-primary, #fff); background: var(--pico-background-color); color: var(--pico-color); border: 1px solid var(--pico-border-color); border-radius: var(--pico-border-radius, 7px); cursor: pointer; font-size: 1rem; } button:hover, [role="button"]:hover { --pico-background-color: var(--pico-primary-hover-background, var(--accent-hover)); --pico-border-color: var(--pico-primary-hover-border, var(--accent-hover)); } /* 표 */ table { width: 100%; border-collapse: collapse; text-align: left; } th, td { padding: 0.75rem 1rem; } /* 진행바 */ progress { -webkit-appearance: none; appearance: none; display: block; width: 100%; height: 6px; border: none; border-radius: 999px; background: var(--pico-progress-background-color, var(--surface)); overflow: hidden; } progress::-webkit-progress-bar { background: var(--pico-progress-background-color, var(--surface)); border-radius: 999px; } progress::-webkit-progress-value { background: var(--accent); border-radius: 999px; transition: width 0.3s ease; } progress::-moz-progress-bar { background: var(--accent); border-radius: 999px; } /* 카드/아티클 */ article { background: var(--pico-card-background-color, var(--bg)); border: 1px solid var(--pico-card-border-color, var(--border)); border-radius: var(--pico-border-radius, 7px); padding: 1.25rem; } /* 다이얼로그 */ dialog { margin: auto; border: none; padding: 0; background: transparent; color: var(--pico-color); max-width: 90vw; } dialog::backdrop { background: rgba(15, 20, 30, 0.45); }