| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302 |
- :root {
- color-scheme: dark;
- --bg: #0c0f14;
- --card: #141a22;
- --border: #2a3340;
- --text: #e8eef6;
- --muted: #8b98a8;
- --accent: #3b82f6;
- --accent-hover: #60a5fa;
- --danger: #f87171;
- --ok: #4ade80;
- font-family:
- ui-sans-serif,
- system-ui,
- -apple-system,
- Segoe UI,
- Roboto,
- sans-serif;
- }
- * {
- box-sizing: border-box;
- }
- body {
- margin: 0;
- background: var(--bg);
- color: var(--text);
- }
- body.popup {
- width: 340px;
- padding: 14px;
- }
- body.page {
- max-width: 480px;
- margin: 0 auto;
- padding: 20px 16px 40px;
- min-height: 100vh;
- }
- .head {
- display: flex;
- align-items: center;
- gap: 10px;
- margin-bottom: 14px;
- }
- .logo {
- border-radius: 8px;
- }
- .grow {
- flex: 1;
- min-width: 0;
- }
- h1 {
- margin: 0;
- font-size: 16px;
- font-weight: 600;
- }
- .sub {
- margin: 2px 0 0;
- font-size: 11px;
- color: var(--muted);
- }
- .blurb {
- margin: 0 0 12px;
- font-size: 13px;
- line-height: 1.45;
- color: var(--muted);
- }
- .badge {
- font-size: 10px;
- font-weight: 600;
- text-transform: uppercase;
- letter-spacing: 0.04em;
- padding: 4px 8px;
- border-radius: 999px;
- border: 1px solid var(--border);
- }
- .badge.locked {
- color: #fbbf24;
- border-color: #854d0e;
- }
- .badge.unlocked {
- color: var(--ok);
- border-color: #166534;
- }
- .error {
- background: #450a0a;
- border: 1px solid #7f1d1d;
- color: #fecaca;
- padding: 8px 10px;
- border-radius: 8px;
- font-size: 12px;
- margin: 0 0 12px;
- }
- .ok {
- color: var(--ok);
- font-size: 14px;
- font-weight: 500;
- }
- .field {
- display: flex;
- flex-direction: column;
- gap: 6px;
- margin-bottom: 12px;
- font-size: 12px;
- color: var(--muted);
- }
- .field input,
- .field textarea {
- border: 1px solid var(--border);
- border-radius: 8px;
- background: var(--card);
- color: var(--text);
- padding: 9px 10px;
- font-size: 13px;
- }
- .field textarea {
- font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
- resize: vertical;
- }
- .pw-row {
- display: flex;
- gap: 6px;
- }
- .pw-row input {
- flex: 1;
- border: 1px solid var(--border);
- border-radius: 8px;
- background: var(--card);
- color: var(--text);
- padding: 9px 10px;
- font-size: 13px;
- }
- .eye {
- width: 40px;
- border: 1px solid var(--border);
- border-radius: 8px;
- background: var(--card);
- cursor: pointer;
- }
- button.primary,
- button.ghost,
- button.danger {
- width: 100%;
- border-radius: 8px;
- padding: 10px 12px;
- font-size: 13px;
- font-weight: 500;
- cursor: pointer;
- margin-bottom: 6px;
- border: 1px solid var(--border);
- text-align: left;
- }
- button.primary {
- background: var(--accent);
- border-color: transparent;
- color: #fff;
- }
- button.primary:hover {
- background: var(--accent-hover);
- }
- button.primary:disabled {
- opacity: 0.45;
- cursor: not-allowed;
- }
- button.ghost {
- background: var(--card);
- color: var(--text);
- }
- button.danger {
- background: transparent;
- border-color: #7f1d1d;
- color: var(--danger);
- }
- .meta,
- .label {
- font-size: 11px;
- color: var(--muted);
- margin: 0 0 6px;
- }
- .mono {
- font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
- font-size: 12px;
- }
- .break {
- word-break: break-all;
- margin: 0 0 12px;
- color: var(--text);
- }
- .foot {
- margin: 14px 0 0;
- font-size: 10px;
- color: var(--muted);
- line-height: 1.4;
- }
- .row {
- display: flex;
- flex-wrap: wrap;
- gap: 6px;
- }
- .row button {
- width: auto;
- flex: 1;
- min-width: 100px;
- }
- .phrase-grid {
- list-style: none;
- margin: 0 0 12px;
- padding: 0;
- display: grid;
- grid-template-columns: 1fr 1fr;
- gap: 6px;
- }
- .phrase-grid li {
- border: 1px solid var(--border);
- border-radius: 999px;
- padding: 8px 10px;
- font-family: ui-monospace, monospace;
- font-size: 12px;
- display: flex;
- gap: 6px;
- }
- .phrase-grid .n {
- color: var(--muted);
- }
- .reveal-box {
- border: 1px dashed var(--border);
- border-radius: 12px;
- padding: 24px;
- text-align: center;
- margin-bottom: 12px;
- }
- .quiz-row {
- margin-bottom: 14px;
- }
- .q-label {
- margin: 0 0 6px;
- font-size: 13px;
- font-weight: 500;
- }
- .choices {
- display: flex;
- flex-wrap: wrap;
- gap: 6px;
- }
- .choice {
- border: 1px solid var(--border);
- border-radius: 999px;
- background: var(--card);
- color: var(--text);
- padding: 8px 12px;
- font-family: ui-monospace, monospace;
- font-size: 12px;
- cursor: pointer;
- width: auto !important;
- margin: 0 !important;
- }
- .choice.selected {
- border-color: var(--accent);
- background: rgba(59, 130, 246, 0.15);
- color: var(--accent-hover);
- }
|