Spaces:
Running
Running
Download src/styles/learn.css from Luca448/APP-Backend: direct link, hf CLI and curl.
- Browser
- Download file 6.04 kB
-
https://huggingface.co/spaces/Luca448/APP-Backend/resolve/main/src/styles/learn.css
- Command line
-
hf download hf://spaces/Luca448/APP-Backend/src/styles/learn.css
-
curl -L -o learn.css https://huggingface.co/spaces/Luca448/APP-Backend/resolve/main/src/styles/learn.css
6.04 kB
| /* --- LEARN VIEW --- */ | |
| .learn-view { | |
| display: flex; | |
| flex-direction: column; | |
| height: 100%; | |
| width: 100%; | |
| padding: 16px; | |
| padding-top: calc(env(safe-area-inset-top, 20px) + 24px); | |
| box-sizing: border-box; | |
| overflow-y: auto; | |
| } | |
| /* Decks Overview */ | |
| .decks-grid { | |
| display: grid; | |
| grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); | |
| gap: 16px; | |
| margin-top: 20px; | |
| } | |
| .deck-card { | |
| background: var(--surface-2); | |
| border-radius: 20px; | |
| padding: 20px; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 12px; | |
| cursor: pointer; | |
| transition: transform 0.2s, background 0.2s; | |
| border: 1px solid rgba(255, 255, 255, 0.05); | |
| } | |
| .deck-card:hover { | |
| transform: translateY(-4px); | |
| background: var(--surface-3); | |
| } | |
| .deck-icon-wrapper { | |
| width: 40px; | |
| height: 40px; | |
| border-radius: 12px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 20px; | |
| } | |
| .deck-title { | |
| font-size: 16px; | |
| font-weight: 600; | |
| color: var(--text-primary); | |
| margin: 0; | |
| } | |
| .deck-stats { | |
| font-size: 13px; | |
| color: var(--text-secondary); | |
| display: flex; | |
| justify-content: space-between; | |
| } | |
| .due-badge { | |
| background: rgba(193, 131, 240, 0.2); | |
| color: #c183f0; | |
| padding: 2px 8px; | |
| border-radius: 12px; | |
| font-weight: 600; | |
| font-size: 12px; | |
| } | |
| /* Study Mode - Progressive Blur Card */ | |
| .study-container { | |
| display: flex; | |
| flex-direction: column; | |
| height: 100%; | |
| align-items: center; | |
| justify-content: center; | |
| padding: 20px 0; | |
| box-sizing: border-box; | |
| overflow: hidden; | |
| } | |
| .flashcard-stack { | |
| position: relative; | |
| width: 100%; | |
| max-width: 380px; | |
| aspect-ratio: 3/4; | |
| margin-bottom: 30px; | |
| min-height: 0; /* Allow shrinking on small screens */ | |
| flex-shrink: 1; | |
| } | |
| .flashcard-wrapper { | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| perspective: 1000px; | |
| } | |
| .flashcard-wrapper.stacked-1 { | |
| z-index: 2; | |
| transform-origin: top center; | |
| transform: translateY(-16px) scale(0.92); | |
| opacity: 0.8; | |
| filter: brightness(0.8); | |
| pointer-events: none; | |
| } | |
| .flashcard-wrapper.stacked-2 { | |
| z-index: 1; | |
| transform-origin: top center; | |
| transform: translateY(-32px) scale(0.84); | |
| opacity: 0.5; | |
| filter: brightness(0.6); | |
| pointer-events: none; | |
| } | |
| .flashcard-wrapper.current { | |
| z-index: 3; | |
| position: relative; | |
| } | |
| .flashcard-inner { | |
| position: relative; | |
| width: 100%; | |
| height: 100%; | |
| text-align: center; | |
| transition: transform 0.6s cubic-bezier(0.4, 0.0, 0.2, 1); | |
| transform-style: preserve-3d; | |
| cursor: pointer; | |
| } | |
| .flashcard-inner.flipped { | |
| transform: rotateY(180deg); | |
| } | |
| .flashcard-face { | |
| position: absolute; | |
| width: 100%; | |
| height: 100%; | |
| -webkit-backface-visibility: hidden; | |
| backface-visibility: hidden; | |
| border-radius: 24px; | |
| overflow: hidden; | |
| background: #1a1a20; | |
| box-shadow: 0 20px 40px rgba(0, 0, 0, 0.4); | |
| transform: translateZ(0); | |
| box-sizing: border-box; | |
| border: 1px solid rgba(255, 255, 255, 0.08); | |
| /* Ultimate WebKit/Android WebView clipping fix */ | |
| -webkit-clip-path: inset(0 round 24px); | |
| clip-path: inset(0 round 24px); | |
| } | |
| .flashcard-face::after { | |
| content: ''; | |
| position: absolute; | |
| top: 0; left: 0; right: 0; bottom: 0; | |
| border-radius: 24px; | |
| /* More intense inner mask to hide ANY remaining subpixel bleeding */ | |
| box-shadow: inset 0 0 0 4px #000; | |
| pointer-events: none; | |
| z-index: 10; | |
| } | |
| .flashcard-back { | |
| transform: rotateY(180deg); | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: flex-start; | |
| padding: 40px 24px 30px 24px; | |
| background: #121216; | |
| /* Use inset shadow instead of border to prevent 3D sub-pixel bleeding on Chromium/Android */ | |
| box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.05); | |
| overflow-y: auto; | |
| overflow-x: hidden; | |
| } | |
| /* The Progressive Blur Magic */ | |
| .flashcard-image { | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| object-fit: cover; | |
| z-index: 1; | |
| border-radius: 24px; | |
| } | |
| .flashcard-blur-overlay { | |
| position: absolute; | |
| bottom: -2px; /* Pull down slightly to cover any sub-pixel gap */ | |
| left: -2px; | |
| right: -2px; | |
| height: 65%; /* Make slightly larger to ensure full coverage */ | |
| z-index: 2; | |
| border-bottom-left-radius: 24px; | |
| border-bottom-right-radius: 24px; | |
| /* Progressive Blur trick */ | |
| backdrop-filter: blur(20px); | |
| -webkit-backdrop-filter: blur(20px); | |
| mask-image: linear-gradient(to bottom, transparent 0%, black 60%); | |
| -webkit-mask-image: linear-gradient(to bottom, transparent 0%, black 60%); | |
| /* Dark fade */ | |
| background: linear-gradient(to bottom, transparent 0%, rgba(0, 0, 0, 0.9) 80%, #000000 100%); | |
| } | |
| .flashcard-content { | |
| position: absolute; | |
| bottom: 0; | |
| left: 0; | |
| right: 0; | |
| z-index: 3; | |
| padding: 30px 20px; | |
| text-align: left; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 8px; | |
| } | |
| .flashcard-title { | |
| font-size: 24px; | |
| font-weight: 700; | |
| color: #ffffff; | |
| margin: 0; | |
| text-shadow: 0 2px 8px rgba(0,0,0,0.5); | |
| } | |
| .flashcard-subtitle { | |
| font-size: 15px; | |
| color: rgba(255, 255, 255, 0.8); | |
| line-height: 1.4; | |
| } | |
| /* Feedback Buttons */ | |
| .feedback-controls { | |
| display: flex; | |
| gap: 12px; | |
| width: 100%; | |
| max-width: 380px; | |
| opacity: 0; | |
| transform: translateY(20px); | |
| transition: opacity 0.3s, transform 0.3s; | |
| pointer-events: none; | |
| } | |
| .feedback-controls.visible { | |
| opacity: 1; | |
| transform: translateY(0); | |
| pointer-events: auto; | |
| } | |
| .btn-feedback { | |
| flex: 1; | |
| padding: 12px 0; | |
| border-radius: 14px; | |
| border: none; | |
| font-weight: 600; | |
| font-size: 13px; | |
| color: white; | |
| cursor: pointer; | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| gap: 4px; | |
| } | |
| .btn-again { background: #ff453a; } | |
| .btn-hard { background: #ff9f0a; } | |
| .btn-good { background: #32d74b; } | |
| .btn-easy { background: #0a84ff; } | |
| .feedback-time { | |
| font-size: 10px; | |
| opacity: 0.8; | |
| font-weight: 500; | |
| } | |