Spaces:
Sleeping
Sleeping
| /* styles/TextShare.css | |
| Colors: 70% Yellow (#f2c200, #d4a800), 30% Orange (#ff9500), with Sky Blue accents (#87ceeb) | |
| Matching the Privacy Policy page style pattern | |
| */ | |
| :root { | |
| --tst-bg: #ffffff; | |
| --tst-text: #0b0b0b; | |
| --tst-yellow: #f2c200; | |
| --tst-yellow-dark: #d4a800; | |
| --tst-orange: #ff9500; | |
| --tst-orange-dark: #e68600; | |
| --tst-skyblue: #87ceeb; | |
| --tst-skyblue-dark: #5fb4d9; | |
| --tst-muted: #6b7280; | |
| --tst-gap: 20px; | |
| --tst-radius: 10px; | |
| --tst-ease: cubic-bezier(.2,.9,.3,1); | |
| } | |
| .tst-page-container { | |
| background: var(--tst-bg); | |
| color: var(--tst-text); | |
| min-height: auto; | |
| display: flex; | |
| flex-direction: column; | |
| font-family: Inter, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial; | |
| -webkit-font-smoothing: antialiased; | |
| -moz-osx-font-smoothing: grayscale; | |
| } | |
| /* decorative header icon */ | |
| .tst-header { | |
| display: flex; | |
| justify-content: flex-start; | |
| align-items: center; | |
| padding: 18px 28px 0 28px; | |
| } | |
| .tst-header-icon { | |
| color: var(--tst-yellow); | |
| font-size: 36px; | |
| opacity: 0.92; | |
| animation: tst-icon-pop 420ms var(--tst-ease) both; | |
| } | |
| /* main layout */ | |
| .tst-main { | |
| width: 90%; | |
| max-width: 96%; | |
| margin: 12px auto 36px; | |
| padding: 0 18px; | |
| display: grid; | |
| grid-template-columns: 1fr; | |
| gap: var(--tst-gap); | |
| box-sizing: border-box; | |
| } | |
| /* each section card */ | |
| .tst-card { | |
| background: #fff; | |
| border: 1px solid rgba(242,194,0,0.12); | |
| border-radius: var(--tst-radius); | |
| padding: 18px 20px; | |
| box-shadow: 0 6px 18px rgba(242,194,0,0.08); | |
| transform: translateY(8px); | |
| opacity: 0; | |
| animation: tst-card-appear 420ms var(--tst-ease) forwards; | |
| } | |
| /* card stagger animation */ | |
| .tst-card:nth-child(1) { animation-delay: 0ms; } | |
| .tst-card:nth-child(2) { animation-delay: 70ms; } | |
| .tst-card:nth-child(3) { animation-delay: 130ms; } | |
| .tst-card:nth-child(4) { animation-delay: 190ms; } | |
| .tst-card:nth-child(5) { animation-delay: 250ms; } | |
| /* intro card accent */ | |
| .tst-intro { | |
| border-left: 4px solid var(--tst-yellow); | |
| background: linear-gradient(135deg, rgba(242,194,0,0.06) 0%, rgba(135,206,235,0.03) 100%); | |
| position: relative; | |
| } | |
| .tst-tool-number { | |
| position: absolute; | |
| top: 16px; | |
| right: 20px; | |
| font-size: 48px; | |
| font-weight: 800; | |
| color: rgba(242,194,0,0.2); | |
| line-height: 1; | |
| } | |
| /* notice card */ | |
| .tst-notice-card { | |
| border-left: 4px solid var(--tst-skyblue); | |
| background: rgba(135,206,235,0.06); | |
| } | |
| .tst-notice { | |
| font-size: 14px; | |
| color: var(--tst-muted); | |
| margin: 0; | |
| line-height: 1.6; | |
| } | |
| .tst-notice strong { | |
| color: var(--tst-text); | |
| } | |
| /* section header with icon */ | |
| .tst-section-header { | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| margin-bottom: 14px; | |
| } | |
| .tst-section-icon { | |
| color: var(--tst-yellow-dark); | |
| font-size: 22px; | |
| flex-shrink: 0; | |
| } | |
| /* titles & typography */ | |
| .tst-title { | |
| color: var(--tst-yellow-dark); | |
| font-size: 28px; | |
| margin: 0 0 6px 0; | |
| line-height: 1.05; | |
| } | |
| .tst-subtitle { | |
| color: var(--tst-orange-dark); | |
| font-size: 18px; | |
| margin: 0; | |
| } | |
| /* paragraphs */ | |
| .tst-plain { | |
| color: var(--tst-text); | |
| font-size: 15px; | |
| line-height: 1.7; | |
| margin: 0 0 12px 0; | |
| } | |
| .tst-meta { | |
| color: rgba(11,11,11,0.6); | |
| font-size: 13px; | |
| margin-top: 8px; | |
| } | |
| /* Textarea wrapper */ | |
| .tst-textarea-wrapper { | |
| margin-bottom: 14px; | |
| } | |
| .tst-textarea { | |
| width: 100%; | |
| min-height: 100px; | |
| max-height: 90vh; | |
| padding: 14px 16px; | |
| border: 2px dashed rgba(242,194,0,0.35); | |
| border-radius: 10px; | |
| background: rgba(242,194,0,0.03); | |
| font-size: 15px; | |
| font-family: inherit; | |
| color: var(--tst-text); | |
| resize: none; | |
| transition: border-color 200ms ease, background 200ms ease, box-shadow 200ms ease; | |
| line-height: 1.6; | |
| overflow-y: auto; | |
| } | |
| .tst-textarea:focus { | |
| outline: none; | |
| border-color: var(--tst-skyblue); | |
| background: #fff; | |
| box-shadow: 0 0 0 4px rgba(135,206,235,0.15); | |
| } | |
| .tst-textarea::placeholder { | |
| color: rgba(11,11,11,0.4); | |
| } | |
| .tst-textarea-readonly { | |
| background: rgba(242,194,0,0.05); | |
| border-style: solid; | |
| border-color: rgba(242,194,0,0.25); | |
| cursor: default; | |
| } | |
| /* Actions row */ | |
| .tst-actions { | |
| display: flex; | |
| gap: 12px; | |
| flex-wrap: wrap; | |
| margin-bottom: 14px; | |
| } | |
| /* Buttons */ | |
| .tst-btn { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 8px; | |
| padding: 12px 20px; | |
| border: none; | |
| border-radius: 8px; | |
| font-size: 15px; | |
| font-weight: 600; | |
| cursor: pointer; | |
| transition: all 200ms var(--tst-ease); | |
| font-family: inherit; | |
| } | |
| .tst-btn-primary { | |
| background: linear-gradient(135deg, var(--tst-yellow), var(--tst-yellow-dark)); | |
| color: #000; | |
| box-shadow: 0 4px 14px rgba(242,194,0,0.35); | |
| } | |
| .tst-btn-primary:hover { | |
| background: linear-gradient(135deg, var(--tst-orange), var(--tst-orange-dark)); | |
| color: #fff; | |
| transform: translateY(-2px); | |
| box-shadow: 0 6px 20px rgba(255,149,0,0.4); | |
| } | |
| .tst-btn-primary:active { | |
| transform: translateY(0); | |
| } | |
| .tst-btn-ghost { | |
| background: transparent; | |
| color: var(--tst-muted); | |
| border: 1px solid rgba(11,11,11,0.1); | |
| } | |
| .tst-btn-ghost:hover { | |
| background: rgba(11,11,11,0.04); | |
| color: var(--tst-text); | |
| } | |
| .tst-btn-icon { | |
| padding: 10px; | |
| background: rgba(242,194,0,0.12); | |
| color: var(--tst-yellow-dark); | |
| border-radius: 8px; | |
| } | |
| .tst-btn-icon:hover { | |
| background: var(--tst-skyblue); | |
| color: #fff; | |
| } | |
| /* Result box for generated code */ | |
| .tst-result-box { | |
| margin-top: 16px; | |
| padding: 16px; | |
| background: linear-gradient(135deg, rgba(242,194,0,0.08) 0%, rgba(135,206,235,0.04) 100%); | |
| border-radius: 10px; | |
| border: 1px solid rgba(242,194,0,0.2); | |
| animation: tst-fade-in 300ms ease; | |
| } | |
| .tst-result-label { | |
| font-size: 13px; | |
| font-weight: 600; | |
| color: var(--tst-muted); | |
| margin-bottom: 8px; | |
| text-transform: uppercase; | |
| letter-spacing: 0.5px; | |
| } | |
| .tst-code-display { | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| } | |
| .tst-code { | |
| font-family: 'SF Mono', Monaco, Consolas, monospace; | |
| font-size: 24px; | |
| font-weight: 700; | |
| color: var(--tst-yellow-dark); | |
| letter-spacing: 2px; | |
| background: #fff; | |
| padding: 8px 16px; | |
| border-radius: 6px; | |
| border: 1px solid rgba(242,194,0,0.25); | |
| } | |
| /* Input group */ | |
| .tst-input-group { | |
| display: flex; | |
| gap: 12px; | |
| align-items: center; | |
| flex-wrap: wrap; | |
| } | |
| .tst-input { | |
| flex: 1; | |
| min-width: 200px; | |
| padding: 12px 16px; | |
| border: 2px solid rgba(242,194,0,0.25); | |
| border-radius: 8px; | |
| font-size: 16px; | |
| font-family: inherit; | |
| text-transform: lowercase; | |
| letter-spacing: 1px; | |
| transition: border-color 200ms ease, box-shadow 200ms ease; | |
| } | |
| .tst-input:focus { | |
| outline: none; | |
| border-color: var(--tst-skyblue); | |
| box-shadow: 0 0 0 4px rgba(135,206,235,0.15); | |
| } | |
| .tst-input::placeholder { | |
| text-transform: none; | |
| letter-spacing: normal; | |
| color: rgba(11,11,11,0.4); | |
| } | |
| /* Fetched text container */ | |
| .tst-fetched-container { | |
| margin-top: 20px; | |
| padding: 16px; | |
| background: rgba(242,194,0,0.04); | |
| border-radius: 10px; | |
| border: 1px solid rgba(242,194,0,0.15); | |
| animation: tst-slide-up 300ms var(--tst-ease); | |
| } | |
| .tst-fetched-header { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| margin-bottom: 12px; | |
| } | |
| .tst-fetched-label { | |
| font-size: 14px; | |
| font-weight: 600; | |
| color: var(--tst-skyblue-dark); | |
| } | |
| /* Status message */ | |
| .tst-status { | |
| padding: 12px 16px; | |
| border-radius: 8px; | |
| font-size: 14px; | |
| font-weight: 500; | |
| text-align: center; | |
| animation: tst-fade-in 300ms ease; | |
| } | |
| .tst-status-success { | |
| background: rgba(34,197,94,0.1); | |
| color: #16a34a; | |
| border: 1px solid rgba(34,197,94,0.2); | |
| } | |
| .tst-status-error { | |
| background: rgba(239,68,68,0.1); | |
| color: #dc2626; | |
| border: 1px solid rgba(239,68,68,0.2); | |
| } | |
| /* Hover micro-interaction */ | |
| .tst-card:hover { | |
| transform: translateY(-2px); | |
| transition: transform 260ms var(--tst-ease), box-shadow 260ms var(--tst-ease); | |
| box-shadow: 0 12px 30px rgba(242,194,0,0.12); | |
| } | |
| /* focus outlines for accessibility */ | |
| .tst-card :focus, | |
| .tst-title:focus { | |
| outline: 3px solid rgba(242,194,0,0.2); | |
| outline-offset: 3px; | |
| border-radius: 8px; | |
| } | |
| /* very small screens: full width */ | |
| @media (max-width: 500px) { | |
| .tst-main { | |
| width: 100%; | |
| max-width: 100%; | |
| padding: 0 8px; | |
| gap: 12px; | |
| } | |
| .tst-card { padding: 12px; border-radius: 6px; } | |
| .tst-title { font-size: 20px; } | |
| .tst-subtitle { font-size: 15px; } | |
| .tst-section-icon { font-size: 16px; } | |
| .tst-header { padding: 12px 16px 0 16px; } | |
| .tst-header-icon { font-size: 28px; } | |
| .tst-tool-number { font-size: 36px; top: 12px; right: 14px; } | |
| .tst-btn { padding: 10px 16px; font-size: 14px; } | |
| .tst-input-group { flex-direction: column; } | |
| .tst-input { width: 100%; } | |
| .tst-code { font-size: 20px; } | |
| } | |
| /* small screens */ | |
| @media (min-width: 501px) and (max-width: 640px) { | |
| .tst-main { padding: 0 12px; gap: 14px; } | |
| .tst-card { padding: 14px; border-radius: 8px; } | |
| .tst-title { font-size: 22px; } | |
| .tst-subtitle { font-size: 16px; } | |
| .tst-section-icon { font-size: 18px; } | |
| } | |
| /* larger screens */ | |
| @media (min-width: 1100px) { | |
| .tst-main { | |
| width: 90%; | |
| max-width: 96%; | |
| gap: 22px; | |
| } | |
| } | |
| /* keyframes */ | |
| @keyframes tst-card-appear { | |
| from { opacity: 0; transform: translateY(8px); } | |
| to { opacity: 1; transform: translateY(0); } | |
| } | |
| @keyframes tst-icon-pop { | |
| from { transform: scale(.95) translateY(6px); opacity: 0; } | |
| to { transform: scale(1) translateY(0); opacity: 1; } | |
| } | |
| @keyframes tst-fade-in { | |
| from { opacity: 0; } | |
| to { opacity: 1; } | |
| } | |
| @keyframes tst-slide-up { | |
| from { opacity: 0; transform: translateY(10px); } | |
| to { opacity: 1; transform: translateY(0); } | |
| } | |
| @keyframes tst-spin { | |
| from { transform: rotate(0deg); } | |
| to { transform: rotate(360deg); } | |
| } | |
| /* ========== EDIT ACCESS TOGGLE ========== */ | |
| .tst-toggle-wrapper { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 6px; | |
| margin-bottom: 16px; | |
| } | |
| .tst-toggle-btn { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 8px; | |
| padding: 10px 16px; | |
| background: rgba(242,194,0,0.08); | |
| border: 2px solid rgba(242,194,0,0.2); | |
| border-radius: 8px; | |
| font-size: 14px; | |
| font-weight: 600; | |
| color: var(--tst-yellow-dark); | |
| cursor: pointer; | |
| transition: all 200ms ease; | |
| width: fit-content; | |
| } | |
| .tst-toggle-btn:hover { | |
| background: rgba(242,194,0,0.15); | |
| border-color: var(--tst-yellow); | |
| } | |
| .tst-toggle-btn.tst-toggle-active { | |
| background: linear-gradient(135deg, var(--tst-yellow), var(--tst-yellow-dark)); | |
| border-color: var(--tst-yellow); | |
| color: #000; | |
| } | |
| .tst-toggle-hint { | |
| font-size: 12px; | |
| color: var(--tst-muted); | |
| padding-left: 4px; | |
| } | |
| /* ========== ACCESS BADGES ========== */ | |
| .tst-access-badge { | |
| margin-top: 12px; | |
| } | |
| .tst-badge { | |
| display: inline-flex; | |
| align-items: center; | |
| gap: 6px; | |
| padding: 6px 12px; | |
| border-radius: 20px; | |
| font-size: 12px; | |
| font-weight: 600; | |
| } | |
| .tst-badge-editable { | |
| background: rgba(34,197,94,0.1); | |
| color: #16a34a; | |
| border: 1px solid rgba(34,197,94,0.2); | |
| } | |
| .tst-badge-readonly { | |
| background: rgba(135,206,235,0.15); | |
| color: var(--tst-skyblue-dark); | |
| border: 1px solid rgba(135,206,235,0.3); | |
| } | |
| /* ========== FETCHED TEXT HEADER UPDATES ========== */ | |
| .tst-fetched-title-row { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| flex-wrap: wrap; | |
| } | |
| .tst-fetched-actions { | |
| display: flex; | |
| gap: 8px; | |
| } | |
| /* ========== EDIT MODE TEXTAREA ========== */ | |
| .tst-textarea-editing { | |
| background: #fff; | |
| border: 2px solid var(--tst-yellow); | |
| box-shadow: 0 0 0 4px rgba(242,194,0,0.12); | |
| } | |
| /* ========== EDIT ACTIONS ========== */ | |
| .tst-edit-actions { | |
| display: flex; | |
| gap: 12px; | |
| margin-top: 14px; | |
| flex-wrap: wrap; | |
| } | |
| /* Secondary button style */ | |
| .tst-btn-secondary { | |
| background: rgba(242,194,0,0.1); | |
| color: var(--tst-yellow-dark); | |
| border: 2px solid rgba(242,194,0,0.25); | |
| } | |
| .tst-btn-secondary:hover { | |
| background: var(--tst-yellow); | |
| color: #000; | |
| border-color: var(--tst-yellow); | |
| } | |
| /* ========== SPINNING ANIMATION ========== */ | |
| .tst-spin { | |
| animation: tst-spin 1s linear infinite; | |
| } | |
| /* ========== MY CODES SECTION ========== */ | |
| .tst-my-codes-card { | |
| border-left: 4px solid var(--tst-orange); | |
| background: linear-gradient(135deg, rgba(255,149,0,0.04) 0%, rgba(242,194,0,0.02) 100%); | |
| padding: 0; | |
| overflow: hidden; | |
| } | |
| .tst-my-codes-toggle { | |
| width: 100%; | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| padding: 16px 20px; | |
| background: transparent; | |
| border: none; | |
| cursor: pointer; | |
| color: var(--tst-text); | |
| font-size: 16px; | |
| transition: background 0.2s ease; | |
| } | |
| .tst-my-codes-toggle:hover { | |
| background: rgba(255,149,0,0.06); | |
| } | |
| .tst-my-codes-toggle-left { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| } | |
| .tst-my-codes-toggle-left .tst-section-icon { | |
| color: var(--tst-orange); | |
| } | |
| .tst-my-codes-toggle-left .tst-subtitle { | |
| margin: 0; | |
| font-size: 16px; | |
| } | |
| .tst-codes-count { | |
| background: var(--tst-orange); | |
| color: #fff; | |
| font-size: 12px; | |
| font-weight: 600; | |
| padding: 2px 8px; | |
| border-radius: 12px; | |
| min-width: 20px; | |
| text-align: center; | |
| } | |
| .tst-my-codes-list { | |
| padding: 0 16px 16px; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 10px; | |
| animation: tst-slide-down 0.3s ease; | |
| } | |
| @keyframes tst-slide-down { | |
| from { | |
| opacity: 0; | |
| transform: translateY(-10px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| .tst-code-item { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| background: rgba(255,255,255,0.7); | |
| border: 1px solid rgba(242,194,0,0.15); | |
| border-radius: 8px; | |
| padding: 12px 14px; | |
| gap: 12px; | |
| transition: all 0.2s ease; | |
| } | |
| .tst-code-item:hover { | |
| background: #fff; | |
| border-color: rgba(242,194,0,0.3); | |
| box-shadow: 0 2px 8px rgba(242,194,0,0.1); | |
| } | |
| .tst-code-item-left { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| flex-wrap: wrap; | |
| flex: 1; | |
| min-width: 0; | |
| } | |
| .tst-code-item-code { | |
| font-family: "SF Mono", Monaco, "Roboto Mono", Consolas, monospace; | |
| font-size: 15px; | |
| font-weight: 600; | |
| color: var(--tst-yellow-dark); | |
| background: rgba(242,194,0,0.1); | |
| padding: 4px 10px; | |
| border-radius: 6px; | |
| } | |
| .tst-code-item-time { | |
| font-size: 12px; | |
| color: var(--tst-muted); | |
| } | |
| .tst-code-item-actions { | |
| display: flex; | |
| gap: 6px; | |
| flex-shrink: 0; | |
| } | |
| .tst-code-item .tst-badge { | |
| padding: 4px 8px; | |
| font-size: 11px; | |
| } | |
| /* Admin action button variants */ | |
| .tst-btn-lock { | |
| color: #16a34a; | |
| } | |
| .tst-btn-lock:hover { | |
| background: rgba(34,197,94,0.1); | |
| color: #16a34a; | |
| } | |
| .tst-btn-unlock { | |
| color: var(--tst-skyblue-dark); | |
| } | |
| .tst-btn-unlock:hover { | |
| background: rgba(135,206,235,0.15); | |
| color: var(--tst-skyblue-dark); | |
| } | |
| .tst-btn-danger { | |
| color: #ef4444; | |
| } | |
| .tst-btn-danger:hover { | |
| background: rgba(239,68,68,0.1); | |
| color: #dc2626; | |
| } | |
| /* ========== RESPONSIVE UPDATES ========== */ | |
| @media (max-width: 500px) { | |
| .tst-toggle-wrapper { | |
| margin-bottom: 12px; | |
| } | |
| .tst-toggle-btn { | |
| padding: 8px 12px; | |
| font-size: 13px; | |
| } | |
| .tst-fetched-header { | |
| flex-direction: column; | |
| align-items: flex-start; | |
| gap: 10px; | |
| } | |
| .tst-fetched-actions { | |
| width: 100%; | |
| justify-content: flex-end; | |
| } | |
| .tst-edit-actions { | |
| flex-direction: column; | |
| } | |
| .tst-edit-actions .tst-btn { | |
| width: 100%; | |
| justify-content: center; | |
| } | |
| /* My Codes responsive */ | |
| .tst-code-item { | |
| flex-direction: column; | |
| align-items: flex-start; | |
| gap: 10px; | |
| } | |
| .tst-code-item-left { | |
| width: 100%; | |
| } | |
| .tst-code-item-actions { | |
| width: 100%; | |
| justify-content: flex-end; | |
| } | |
| .tst-my-codes-toggle { | |
| padding: 14px 16px; | |
| } | |
| .tst-my-codes-toggle-left .tst-subtitle { | |
| font-size: 14px; | |
| } | |
| } | |
| /* ========== TOAST NOTIFICATION ========== */ | |
| .tst-toast { | |
| position: fixed; | |
| top: 20px; | |
| left: 50%; | |
| transform: translateX(-50%); | |
| z-index: 10000; | |
| display: flex; | |
| align-items: center; | |
| gap: 12px; | |
| padding: 14px 20px; | |
| border-radius: 12px; | |
| background: #fff; | |
| box-shadow: 0 8px 32px rgba(0, 0, 0, 0.18), 0 2px 8px rgba(0, 0, 0, 0.08); | |
| min-width: 280px; | |
| max-width: 90vw; | |
| animation: tst-toast-slide-in 0.4s var(--tst-ease); | |
| border: 1px solid rgba(0, 0, 0, 0.08); | |
| } | |
| @keyframes tst-toast-slide-in { | |
| from { | |
| opacity: 0; | |
| transform: translateX(-50%) translateY(-20px) scale(0.95); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateX(-50%) translateY(0) scale(1); | |
| } | |
| } | |
| .tst-toast-icon { | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| width: 28px; | |
| height: 28px; | |
| border-radius: 50%; | |
| font-size: 16px; | |
| flex-shrink: 0; | |
| } | |
| .tst-toast-message { | |
| flex: 1; | |
| font-size: 14px; | |
| font-weight: 500; | |
| line-height: 1.4; | |
| color: #1f2937; | |
| } | |
| .tst-toast-close { | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| width: 28px; | |
| height: 28px; | |
| border: none; | |
| background: transparent; | |
| color: #6b7280; | |
| cursor: pointer; | |
| border-radius: 6px; | |
| transition: all 0.2s ease; | |
| flex-shrink: 0; | |
| } | |
| .tst-toast-close:hover { | |
| background: rgba(0, 0, 0, 0.05); | |
| color: #374151; | |
| } | |
| /* Toast type variants */ | |
| .tst-toast-success { | |
| border-left: 4px solid #22c55e; | |
| } | |
| .tst-toast-success .tst-toast-icon { | |
| background: rgba(34, 197, 94, 0.15); | |
| color: #16a34a; | |
| } | |
| .tst-toast-error { | |
| border-left: 4px solid #ef4444; | |
| } | |
| .tst-toast-error .tst-toast-icon { | |
| background: rgba(239, 68, 68, 0.15); | |
| color: #dc2626; | |
| } | |
| .tst-toast-info { | |
| border-left: 4px solid var(--tst-yellow); | |
| } | |
| .tst-toast-info .tst-toast-icon { | |
| background: rgba(242, 194, 0, 0.15); | |
| color: var(--tst-yellow-dark); | |
| } | |
| /* Toast responsive */ | |
| @media (max-width: 500px) { | |
| .tst-toast { | |
| top: 12px; | |
| left: 12px; | |
| right: 12px; | |
| transform: none; | |
| min-width: auto; | |
| max-width: none; | |
| padding: 12px 16px; | |
| } | |
| @keyframes tst-toast-slide-in { | |
| from { | |
| opacity: 0; | |
| transform: translateY(-20px) scale(0.95); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0) scale(1); | |
| } | |
| } | |
| .tst-toast-message { | |
| font-size: 13px; | |
| } | |
| } | |
| /* ========== CUSTOM CODE MODAL ========== */ | |
| .tst-modal-overlay { | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| bottom: 0; | |
| background: rgba(0, 0, 0, 0.5); | |
| backdrop-filter: blur(4px); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| z-index: 9998; | |
| padding: 20px; | |
| animation: tst-modal-fade-in 0.25s ease; | |
| } | |
| @keyframes tst-modal-fade-in { | |
| from { | |
| opacity: 0; | |
| } | |
| to { | |
| opacity: 1; | |
| } | |
| } | |
| .tst-modal { | |
| background: #fff; | |
| border-radius: 16px; | |
| width: 100%; | |
| max-width: 420px; | |
| box-shadow: 0 20px 60px rgba(0, 0, 0, 0.25); | |
| animation: tst-modal-scale-in 0.3s var(--tst-ease); | |
| overflow: hidden; | |
| } | |
| @keyframes tst-modal-scale-in { | |
| from { | |
| opacity: 0; | |
| transform: scale(0.9) translateY(20px); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: scale(1) translateY(0); | |
| } | |
| } | |
| .tst-modal-header { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| padding: 18px 20px; | |
| border-bottom: 1px solid rgba(242, 194, 0, 0.15); | |
| background: linear-gradient(135deg, rgba(242, 194, 0, 0.08) 0%, rgba(255, 149, 0, 0.04) 100%); | |
| } | |
| .tst-modal-title { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| font-size: 18px; | |
| font-weight: 600; | |
| color: var(--tst-text); | |
| margin: 0; | |
| } | |
| .tst-modal-title svg { | |
| color: var(--tst-yellow-dark); | |
| font-size: 20px; | |
| } | |
| .tst-modal-close { | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| width: 32px; | |
| height: 32px; | |
| border: none; | |
| background: transparent; | |
| color: var(--tst-muted); | |
| cursor: pointer; | |
| border-radius: 8px; | |
| transition: all 0.2s ease; | |
| } | |
| .tst-modal-close:hover { | |
| background: rgba(0, 0, 0, 0.08); | |
| color: var(--tst-text); | |
| } | |
| .tst-modal-body { | |
| padding: 20px; | |
| } | |
| .tst-modal-desc { | |
| font-size: 14px; | |
| color: var(--tst-muted); | |
| margin: 0 0 18px 0; | |
| line-height: 1.5; | |
| } | |
| .tst-modal-input-group { | |
| display: flex; | |
| flex-direction: column; | |
| gap: 8px; | |
| } | |
| .tst-modal-input { | |
| width: 100%; | |
| padding: 14px 16px; | |
| font-size: 16px; | |
| font-family: "SF Mono", Monaco, "Roboto Mono", Consolas, monospace; | |
| border: 2px solid rgba(242, 194, 0, 0.25); | |
| border-radius: 10px; | |
| background: rgba(242, 194, 0, 0.04); | |
| color: var(--tst-text); | |
| outline: none; | |
| transition: all 0.2s ease; | |
| box-sizing: border-box; | |
| } | |
| .tst-modal-input:focus { | |
| border-color: var(--tst-yellow); | |
| background: #fff; | |
| box-shadow: 0 0 0 4px rgba(242, 194, 0, 0.12); | |
| } | |
| .tst-modal-input::placeholder { | |
| color: var(--tst-muted); | |
| font-family: Inter, system-ui, sans-serif; | |
| } | |
| .tst-modal-input-hint { | |
| font-size: 12px; | |
| color: var(--tst-muted); | |
| } | |
| .tst-availability-status { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| padding: 12px 14px; | |
| border-radius: 8px; | |
| font-size: 14px; | |
| font-weight: 500; | |
| margin-top: 14px; | |
| } | |
| .tst-availability-status.tst-available { | |
| background: rgba(34, 197, 94, 0.1); | |
| color: #16a34a; | |
| border: 1px solid rgba(34, 197, 94, 0.2); | |
| } | |
| .tst-availability-status.tst-taken { | |
| background: rgba(239, 68, 68, 0.1); | |
| color: #dc2626; | |
| border: 1px solid rgba(239, 68, 68, 0.2); | |
| } | |
| .tst-modal-footer { | |
| padding: 16px 20px 20px; | |
| } | |
| .tst-btn-full { | |
| width: 100%; | |
| justify-content: center; | |
| } | |
| /* Modal responsive */ | |
| @media (max-width: 500px) { | |
| .tst-modal-overlay { | |
| padding: 16px; | |
| align-items: center; | |
| } | |
| .tst-modal { | |
| max-width: none; | |
| border-radius: 20px 20px 0 0; | |
| animation: tst-modal-slide-up 0.3s var(--tst-ease); | |
| } | |
| @keyframes tst-modal-slide-up { | |
| from { | |
| opacity: 0; | |
| transform: translateY(100%); | |
| } | |
| to { | |
| opacity: 1; | |
| transform: translateY(0); | |
| } | |
| } | |
| .tst-modal-header { | |
| padding: 16px 18px; | |
| } | |
| .tst-modal-title { | |
| font-size: 16px; | |
| } | |
| .tst-modal-body { | |
| padding: 18px; | |
| } | |
| .tst-modal-footer { | |
| padding: 14px 18px 24px; | |
| } | |
| } | |
| /* ========== FULLSCREEN OVERLAY ========== */ | |
| .tst-fullscreen-overlay { | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| width: 100vw; | |
| height: 100vh; | |
| background: #ffffff; | |
| z-index: 9999; | |
| display: flex; | |
| flex-direction: column; | |
| box-sizing: border-box; | |
| overflow: hidden; | |
| } | |
| .tst-fullscreen-header { | |
| display: flex; | |
| align-items: center; | |
| justify-content: space-between; | |
| padding: 16px 24px; | |
| background: linear-gradient(135deg, rgba(242, 194, 0, 0.08) 0%, rgba(255, 149, 0, 0.04) 100%); | |
| border-bottom: 1px solid rgba(242, 194, 0, 0.15); | |
| flex-shrink: 0; | |
| } | |
| .tst-fullscreen-header-left { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| } | |
| .tst-fullscreen-header-right { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| } | |
| .tst-fullscreen-code { | |
| display: flex; | |
| align-items: center; | |
| gap: 8px; | |
| padding: 8px 14px; | |
| background: rgba(242, 194, 0, 0.1); | |
| border-radius: 8px; | |
| } | |
| .tst-fullscreen-code-label { | |
| font-size: 13px; | |
| color: var(--tst-muted); | |
| font-weight: 500; | |
| } | |
| .tst-fullscreen-code-value { | |
| font-family: "SF Mono", Monaco, "Roboto Mono", Consolas, monospace; | |
| font-size: 15px; | |
| font-weight: 600; | |
| color: var(--tst-yellow-dark); | |
| } | |
| .tst-fullscreen-content { | |
| flex: 1; | |
| display: flex; | |
| flex-direction: column; | |
| padding: 0; | |
| overflow: hidden; | |
| } | |
| .tst-textarea-fullscreen { | |
| width: 100%; | |
| height: 100%; | |
| padding: 24px; | |
| border: none; | |
| border-radius: 0; | |
| font-size: 16px; | |
| line-height: 1.7; | |
| resize: none; | |
| box-sizing: border-box; | |
| overflow-y: auto; | |
| } | |
| .tst-textarea-fullscreen:focus { | |
| outline: none; | |
| box-shadow: none; | |
| } | |
| /* Fullscreen button variants */ | |
| .tst-btn-save { | |
| background: rgba(34, 197, 94, 0.12) ; | |
| color: #16a34a ; | |
| } | |
| .tst-btn-save:hover { | |
| background: rgba(34, 197, 94, 0.2) ; | |
| color: #16a34a ; | |
| } | |
| .tst-btn-cancel { | |
| background: rgba(239, 68, 68, 0.12) ; | |
| color: #ef4444 ; | |
| } | |
| .tst-btn-cancel:hover { | |
| background: rgba(239, 68, 68, 0.2) ; | |
| color: #dc2626 ; | |
| } | |
| .tst-btn-edit { | |
| background: rgba(242, 194, 0, 0.12) ; | |
| color: var(--tst-yellow-dark) ; | |
| } | |
| .tst-btn-edit:hover { | |
| background: rgba(242, 194, 0, 0.2) ; | |
| color: var(--tst-yellow-dark) ; | |
| } | |
| /* Fullscreen toast positioning */ | |
| .tst-toast-fullscreen { | |
| z-index: 10001; | |
| } | |
| /* Fullscreen responsive */ | |
| @media (max-width: 600px) { | |
| .tst-fullscreen-header { | |
| padding: 12px 16px; | |
| flex-direction: column; | |
| gap: 12px; | |
| align-items: stretch; | |
| } | |
| .tst-fullscreen-header-left { | |
| justify-content: space-between; | |
| width: 100%; | |
| } | |
| .tst-fullscreen-header-right { | |
| justify-content: flex-end; | |
| width: 100%; | |
| flex-wrap: wrap; | |
| } | |
| .tst-fullscreen-code { | |
| padding: 6px 12px; | |
| } | |
| .tst-fullscreen-code-label { | |
| font-size: 11px; | |
| } | |
| .tst-fullscreen-code-value { | |
| font-size: 13px; | |
| } | |
| .tst-textarea-fullscreen { | |
| padding: 16px; | |
| font-size: 15px; | |
| } | |
| } | |
| @media (max-width: 500px) { | |
| .tst-fullscreen-header-left, | |
| .tst-fullscreen-header-right { | |
| gap: 6px; | |
| } | |
| .tst-btn-icon { | |
| padding: 8px; | |
| font-size: 14px; | |
| } | |
| } |