Image-Text-to-Text
Transformers
Safetensors
gemma4
mergekit
Merge
roleplay
storytelling
conversational
Instructions to use Vortex5/Scarlet-Shadow-31B with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Vortex5/Scarlet-Shadow-31B with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="Vortex5/Scarlet-Shadow-31B") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] pipe(text=messages)# Load model directly from transformers import AutoProcessor, AutoModelForMultimodalLM processor = AutoProcessor.from_pretrained("Vortex5/Scarlet-Shadow-31B") model = AutoModelForMultimodalLM.from_pretrained("Vortex5/Scarlet-Shadow-31B", device_map="auto") messages = [ { "role": "user", "content": [ {"type": "image", "url": "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/p-blog/candy.JPG"}, {"type": "text", "text": "What animal is on the candy?"} ] }, ] inputs = processor.apply_chat_template( messages, add_generation_prompt=True, tokenize=True, return_dict=True, return_tensors="pt", ).to(model.device) outputs = model.generate(**inputs, max_new_tokens=40) print(processor.decode(outputs[0][inputs["input_ids"].shape[-1]:])) - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use Vortex5/Scarlet-Shadow-31B with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "Vortex5/Scarlet-Shadow-31B" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Vortex5/Scarlet-Shadow-31B", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker
docker model run hf.co/Vortex5/Scarlet-Shadow-31B
- SGLang
How to use Vortex5/Scarlet-Shadow-31B with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "Vortex5/Scarlet-Shadow-31B" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Vortex5/Scarlet-Shadow-31B", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "Vortex5/Scarlet-Shadow-31B" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "Vortex5/Scarlet-Shadow-31B", "messages": [ { "role": "user", "content": [ { "type": "text", "text": "Describe this image in one sentence." }, { "type": "image_url", "image_url": { "url": "https://cdn.britannica.com/61/93061-050-99147DCE/Statue-of-Liberty-Island-New-York-Bay.jpg" } } ] } ] }' - Docker Model Runner
How to use Vortex5/Scarlet-Shadow-31B with Docker Model Runner:
docker model run hf.co/Vortex5/Scarlet-Shadow-31B
| base_model: | |
| - google/gemma-4-31B-it | |
| - ReadyArt/gemma-4-31B-it-scotoma-2 | |
| - ReadyArt/Dark-Scarlett-v2.0-31B | |
| - Vortex5/Glimmering-Citrus-31B | |
| library_name: transformers | |
| tags: | |
| - mergekit | |
| - merge | |
| - roleplay | |
| - storytelling | |
| license: apache-2.0 | |
| <section class="card"> | |
| <div class="trim trim-a"></div> | |
| <div class="trim trim-b"></div> | |
| <header class="top"> | |
| <div class="mark"> | |
| <span></span> | |
| <span></span> | |
| <span></span> | |
| </div> | |
| <h1>Scarlet-Shadow-31B</h1> | |
| <div class="rule"> | |
| <i></i> | |
| <b></b> | |
| <i></i> | |
| </div> | |
| </header> | |
| <figure class="media"> | |
| <span class="corner corner-tl"></span> | |
| <span class="corner corner-tr"></span> | |
| <span class="corner corner-bl"></span> | |
| <span class="corner corner-br"></span> | |
| <div class="media-inner"> | |
| <img | |
| src="https://cdn-uploads.huggingface.co/production/uploads/6669a3a617b838fda45637b8/hKvA-6hFvTj_7GseG9avd.png" | |
| alt="Scarlet-Shadow-31B artwork" | |
| > | |
| </div> | |
| </figure> | |
| <section class="section intro"> | |
| <div class="heading"> | |
| <span class="drop"></span> | |
| <h2>Overview</h2> | |
| <span class="drop"></span> | |
| </div> | |
| <p class="lead"> | |
| <strong>Scarlet-Shadow-31B</strong> was created by merging | |
| <a href="https://huggingface.co/Vortex5/Glimmering-Citrus-31B">Glimmering-Citrus-31B</a>, | |
| <a href="https://huggingface.co/ReadyArt/Dark-Scarlett-v2.0-31B">Dark-Scarlett-v2.0-31B</a>, | |
| <a href="https://huggingface.co/ReadyArt/gemma-4-31B-it-scotoma-2">gemma-4-31B-it-scotoma-2</a>, | |
| and | |
| <a href="https://huggingface.co/google/gemma-4-31B-it">Gemma-4-31B-it</a> using a custom method. | |
| </p> | |
| <details class="fold"> | |
| <summary> | |
| <span class="fold-name">Merge Configuration</span> | |
| <span class="fold-icon"></span> | |
| </summary> | |
| <pre><code>base_model: google/gemma-4-31B-it | |
| models: | |
| - model: Vortex5/Glimmering-Citrus-31B | |
| - model: ReadyArt/Dark-Scarlett-v2.0-31B | |
| - model: ReadyArt/gemma-4-31B-it-scotoma-2 | |
| merge_method: fcar | |
| chat_template: auto | |
| parameters: | |
| strength: 1.0 | |
| gain: 0.5 | |
| focus: 0.55 | |
| recover: 0.25 | |
| distinct: 0.65 | |
| dtype: float32 | |
| out_dtype: bfloat16 | |
| tokenizer: | |
| source: union</code></pre> | |
| </details> | |
| </section> | |
| <section class="section uses"> | |
| <div class="heading"> | |
| <span class="drop"></span> | |
| <h2>Intended Use</h2> | |
| <span class="drop"></span> | |
| </div> | |
| <div class="grid"> | |
| <article class="item"> | |
| <div class="item-copy"> | |
| <h3>Roleplay</h3> | |
| <p>Character interaction, dialogue, personas, and multi-turn scenes.</p> | |
| </div> | |
| </article> | |
| <article class="item"> | |
| <div class="item-copy"> | |
| <h3>Creative Writing</h3> | |
| <p>Drafting fiction, descriptions, dialogue, and scene variations.</p> | |
| </div> | |
| </article> | |
| <article class="item"> | |
| <div class="item-copy"> | |
| <h3>Storytelling</h3> | |
| <p>Short stories, longer narratives, plot development, and worldbuilding.</p> | |
| </div> | |
| </article> | |
| <article class="item"> | |
| <div class="item-copy"> | |
| <h3>Brainstorming</h3> | |
| <p>Generating concepts, outlines, alternatives, and writing ideas.</p> | |
| </div> | |
| </article> | |
| </div> | |
| </section> | |
| <div class="bottom-rule"> | |
| <span></span> | |
| <i></i> | |
| <span></span> | |
| </div> | |
| </section> | |
| <style> | |
| @import url("https://fonts.googleapis.com/css2?family=Cinzel:wght@500;600;700&family=JetBrains+Mono:wght@400;500;600&family=Libre+Baskerville:wght@400;700&display=swap"); | |
| .card { | |
| --accent-1: #e24855; | |
| --accent-2: #b52331; | |
| --accent-3: #7f101b; | |
| --accent-4: #3b070d; | |
| --surface-1: #0d090a; | |
| --surface-2: #090607; | |
| --surface-3: #050405; | |
| --surface-4: #160a0c; | |
| --line: rgba(180, 34, 49, 0.72); | |
| --line-soft: rgba(120, 24, 35, 0.46); | |
| --text: #d8c7c8; | |
| --text-soft: #a99395; | |
| position: relative; | |
| isolation: isolate; | |
| container-type: inline-size; | |
| width: 100%; | |
| max-width: 1260px; | |
| margin: 46px auto; | |
| padding: clamp(34px, 5vw, 68px); | |
| overflow: hidden; | |
| color: var(--text); | |
| font-family: "Libre Baskerville", Georgia, serif; | |
| border: 1px solid rgba(145, 26, 39, 0.82); | |
| background: | |
| radial-gradient( | |
| circle at 50% 0%, | |
| rgba(136, 11, 25, 0.15), | |
| transparent 28% | |
| ), | |
| radial-gradient( | |
| circle at 0% 58%, | |
| rgba(102, 8, 20, 0.10), | |
| transparent 24% | |
| ), | |
| radial-gradient( | |
| circle at 100% 64%, | |
| rgba(118, 9, 22, 0.10), | |
| transparent 24% | |
| ), | |
| repeating-linear-gradient( | |
| 0deg, | |
| rgba(255,255,255,0.008) 0, | |
| rgba(255,255,255,0.008) 1px, | |
| transparent 1px, | |
| transparent 6px | |
| ), | |
| linear-gradient( | |
| 145deg, | |
| #070506 0%, | |
| #0c0809 48%, | |
| #050405 100% | |
| ); | |
| box-shadow: | |
| inset 0 0 0 4px rgba(28, 8, 11, 0.95), | |
| inset 0 0 0 5px rgba(145, 25, 38, 0.20), | |
| inset 0 0 100px rgba(0,0,0,0.86); | |
| } | |
| .card, | |
| .card * { | |
| box-sizing: border-box; | |
| } | |
| .card::before { | |
| content: ""; | |
| position: absolute; | |
| inset: 18px; | |
| z-index: -1; | |
| pointer-events: none; | |
| border: 1px solid rgba(133, 24, 36, 0.52); | |
| background: | |
| linear-gradient( | |
| 90deg, | |
| transparent 0 6%, | |
| rgba(137, 24, 37, 0.15) 6% 6.2%, | |
| transparent 6.2% 93.8%, | |
| rgba(137, 24, 37, 0.15) 93.8% 94%, | |
| transparent 94% | |
| ); | |
| } | |
| .card::after { | |
| content: ""; | |
| position: absolute; | |
| left: 8%; | |
| right: 8%; | |
| bottom: 5px; | |
| height: 2px; | |
| z-index: 8; | |
| pointer-events: none; | |
| background: | |
| linear-gradient( | |
| 90deg, | |
| transparent, | |
| rgba(88, 9, 18, 0.60), | |
| #7b101c 50%, | |
| rgba(88, 9, 18, 0.60), | |
| transparent | |
| ); | |
| box-shadow: | |
| 0 -8px 35px rgba(141, 11, 27, 0.22); | |
| } | |
| .trim { | |
| position: absolute; | |
| z-index: 1; | |
| top: 92px; | |
| bottom: 92px; | |
| width: 15px; | |
| pointer-events: none; | |
| border-top: 1px solid rgba(174, 35, 48, 0.65); | |
| border-bottom: 1px solid rgba(174, 35, 48, 0.65); | |
| background: | |
| linear-gradient( | |
| 90deg, | |
| transparent 0 28%, | |
| rgba(92, 16, 26, 0.88) 28% 35%, | |
| rgba(185, 39, 52, 0.72) 46% 52%, | |
| rgba(72, 12, 20, 0.80) 64% 71%, | |
| transparent 71% | |
| ); | |
| filter: | |
| drop-shadow(0 0 8px rgba(143, 13, 29, 0.18)); | |
| } | |
| .trim::before, | |
| .trim::after { | |
| content: ""; | |
| position: absolute; | |
| left: 50%; | |
| width: 31px; | |
| height: 31px; | |
| border: 1px solid rgba(163, 31, 44, 0.64); | |
| background: | |
| linear-gradient( | |
| 135deg, | |
| rgba(10, 5, 7, 1), | |
| rgba(39, 7, 13, 0.78) | |
| ); | |
| transform: | |
| translateX(-50%) | |
| rotate(45deg); | |
| } | |
| .trim::before { | |
| top: -12px; | |
| } | |
| .trim::after { | |
| bottom: -12px; | |
| } | |
| .trim-a { | |
| left: 24px; | |
| } | |
| .trim-b { | |
| right: 24px; | |
| transform: scaleX(-1); | |
| } | |
| .top { | |
| position: relative; | |
| z-index: 2; | |
| width: 100%; | |
| padding: 16px 10px 40px; | |
| text-align: center; | |
| } | |
| .mark { | |
| position: relative; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 5px; | |
| width: 90px; | |
| height: 52px; | |
| margin: 0 auto 13px; | |
| } | |
| .mark::before, | |
| .mark::after { | |
| content: ""; | |
| position: absolute; | |
| top: 50%; | |
| width: 35px; | |
| height: 1px; | |
| background: | |
| linear-gradient( | |
| 90deg, | |
| transparent, | |
| rgba(168, 31, 44, 0.70) | |
| ); | |
| } | |
| .mark::before { | |
| right: 50%; | |
| margin-right: 18px; | |
| } | |
| .mark::after { | |
| left: 50%; | |
| margin-left: 18px; | |
| transform: scaleX(-1); | |
| } | |
| .mark span { | |
| display: block; | |
| width: 12px; | |
| height: 12px; | |
| border: 1px solid rgba(213, 55, 69, 0.78); | |
| background: | |
| linear-gradient( | |
| 135deg, | |
| #12070a, | |
| #8c1020 56%, | |
| #26060b | |
| ); | |
| transform: rotate(45deg); | |
| box-shadow: | |
| 0 0 0 3px rgba(64, 8, 15, 0.75), | |
| 0 0 15px rgba(159, 16, 34, 0.24); | |
| } | |
| .mark span:nth-child(1), | |
| .mark span:nth-child(3) { | |
| width: 8px; | |
| height: 8px; | |
| opacity: 0.75; | |
| } | |
| .mark span:nth-child(2) { | |
| width: 22px; | |
| height: 22px; | |
| border-color: rgba(232, 63, 76, 0.82); | |
| background: | |
| linear-gradient( | |
| 135deg, | |
| #130509 0%, | |
| #8f1020 38%, | |
| #d83345 50%, | |
| #6c0b18 64%, | |
| #170508 100% | |
| ); | |
| box-shadow: | |
| 0 0 0 4px rgba(42, 5, 10, 0.90), | |
| 0 0 20px rgba(187, 18, 40, 0.32); | |
| } | |
| .top h1 { | |
| position: relative; | |
| display: inline-block; | |
| max-width: 100%; | |
| margin: 0; | |
| padding: 0.08em 0.18em 0.15em; | |
| white-space: nowrap; | |
| color: #c84a56; | |
| font-family: "Cinzel", Georgia, serif; | |
| font-size: clamp(1.45rem, 5.1cqi, 4.35rem); | |
| font-weight: 500; | |
| line-height: 1; | |
| letter-spacing: 0.02em; | |
| text-shadow: | |
| 0 1px 0 #2c090e, | |
| 0 0 14px rgba(168, 23, 40, 0.17); | |
| } | |
| .rule { | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| width: min(820px, 88%); | |
| margin: 28px auto 0; | |
| } | |
| .rule i { | |
| display: block; | |
| width: 42%; | |
| height: 3px; | |
| background: | |
| linear-gradient( | |
| 90deg, | |
| transparent, | |
| rgba(71, 10, 17, 0.88) 20%, | |
| #8f1724 70%, | |
| #31070c | |
| ); | |
| box-shadow: | |
| 0 -1px 0 rgba(180, 42, 54, 0.16); | |
| } | |
| .rule i:last-child { | |
| transform: scaleX(-1); | |
| } | |
| .rule b { | |
| position: relative; | |
| display: block; | |
| flex: 0 0 20px; | |
| width: 20px; | |
| height: 20px; | |
| margin: 0 16px; | |
| border: 1px solid #a41c2b; | |
| background: | |
| linear-gradient( | |
| 135deg, | |
| #140508 0%, | |
| #8d1020 44%, | |
| #dc3347 52%, | |
| #4b0911 70%, | |
| #100406 100% | |
| ); | |
| transform: rotate(45deg); | |
| box-shadow: | |
| 0 0 0 4px rgba(25, 5, 8, 0.95), | |
| 0 0 16px rgba(164, 15, 33, 0.22); | |
| } | |
| .media { | |
| position: relative; | |
| z-index: 2; | |
| width: 100%; | |
| margin: 0 auto 40px; | |
| padding: clamp(12px, 1.6vw, 18px); | |
| overflow: hidden; | |
| border: 1px solid rgba(133, 27, 39, 0.84); | |
| background: | |
| linear-gradient( | |
| 145deg, | |
| rgba(17, 8, 10, 0.98), | |
| rgba(5, 4, 5, 0.98) | |
| ); | |
| box-shadow: | |
| inset 0 0 0 4px rgba(4, 3, 4, 0.84), | |
| inset 0 0 0 5px rgba(114, 19, 30, 0.20), | |
| 0 10px 28px rgba(0,0,0,0.36); | |
| } | |
| .media::before { | |
| content: ""; | |
| position: absolute; | |
| inset: 8px; | |
| z-index: 5; | |
| pointer-events: none; | |
| border: 1px solid rgba(83, 16, 25, 0.78); | |
| } | |
| .media::after { | |
| content: ""; | |
| position: absolute; | |
| left: 14%; | |
| right: 14%; | |
| bottom: 8px; | |
| height: 1px; | |
| z-index: 6; | |
| pointer-events: none; | |
| background: | |
| linear-gradient( | |
| 90deg, | |
| transparent, | |
| rgba(143, 23, 36, 0.72), | |
| #bd2737, | |
| rgba(143, 23, 36, 0.72), | |
| transparent | |
| ); | |
| box-shadow: | |
| 0 0 10px rgba(165, 18, 36, 0.18); | |
| } | |
| .media-inner { | |
| position: relative; | |
| width: 100%; | |
| overflow: hidden; | |
| border: 1px solid rgba(108, 20, 31, 0.84); | |
| background: | |
| radial-gradient( | |
| circle at center, | |
| #11080a, | |
| #050405 72% | |
| ); | |
| box-shadow: | |
| inset 0 0 28px rgba(0,0,0,0.75), | |
| 0 0 0 3px rgba(38, 7, 12, 0.82); | |
| } | |
| .media-inner::after { | |
| content: ""; | |
| position: absolute; | |
| inset: 0; | |
| pointer-events: none; | |
| box-shadow: | |
| inset 0 0 65px rgba(0,0,0,0.52), | |
| inset 0 0 0 1px rgba(139, 27, 39, 0.22); | |
| } | |
| .media-inner img { | |
| display: block; | |
| width: 100%; | |
| max-width: 100%; | |
| height: auto; | |
| margin: 0 auto; | |
| border: 0; | |
| object-fit: contain; | |
| object-position: center; | |
| } | |
| .corner { | |
| position: absolute; | |
| z-index: 8; | |
| width: 58px; | |
| height: 58px; | |
| pointer-events: none; | |
| } | |
| .corner::before, | |
| .corner::after { | |
| content: ""; | |
| position: absolute; | |
| background: | |
| linear-gradient( | |
| 90deg, | |
| #3c080f, | |
| #ac1f2f, | |
| #4c0a13 | |
| ); | |
| } | |
| .corner::before { | |
| width: 100%; | |
| height: 2px; | |
| } | |
| .corner::after { | |
| width: 2px; | |
| height: 100%; | |
| } | |
| .corner-tl { | |
| top: 5px; | |
| left: 5px; | |
| } | |
| .corner-tl::before { | |
| top: 0; | |
| left: 0; | |
| } | |
| .corner-tl::after { | |
| top: 0; | |
| left: 0; | |
| } | |
| .corner-tr { | |
| top: 5px; | |
| right: 5px; | |
| transform: scaleX(-1); | |
| } | |
| .corner-tr::before { | |
| top: 0; | |
| left: 0; | |
| } | |
| .corner-tr::after { | |
| top: 0; | |
| left: 0; | |
| } | |
| .corner-bl { | |
| bottom: 5px; | |
| left: 5px; | |
| transform: scaleY(-1); | |
| } | |
| .corner-bl::before { | |
| top: 0; | |
| left: 0; | |
| } | |
| .corner-bl::after { | |
| top: 0; | |
| left: 0; | |
| } | |
| .corner-br { | |
| right: 5px; | |
| bottom: 5px; | |
| transform: scale(-1); | |
| } | |
| .corner-br::before { | |
| top: 0; | |
| left: 0; | |
| } | |
| .corner-br::after { | |
| top: 0; | |
| left: 0; | |
| } | |
| .section { | |
| position: relative; | |
| z-index: 2; | |
| margin-bottom: 34px; | |
| padding: clamp(28px, 4vw, 48px); | |
| border: 1px solid rgba(118, 23, 34, 0.78); | |
| background: | |
| radial-gradient( | |
| circle at 50% -20%, | |
| rgba(116, 12, 25, 0.09), | |
| transparent 45% | |
| ), | |
| repeating-linear-gradient( | |
| 0deg, | |
| rgba(255,255,255,0.006) 0, | |
| rgba(255,255,255,0.006) 1px, | |
| transparent 1px, | |
| transparent 6px | |
| ), | |
| linear-gradient( | |
| 145deg, | |
| #0d090a, | |
| #080607 | |
| ); | |
| box-shadow: | |
| inset 0 0 0 3px rgba(3, 2, 3, 0.70), | |
| inset 0 0 0 4px rgba(103, 19, 29, 0.14), | |
| 0 8px 22px rgba(0,0,0,0.28); | |
| } | |
| .section::before { | |
| content: ""; | |
| position: absolute; | |
| top: -7px; | |
| left: 50%; | |
| width: min(245px, 36%); | |
| height: 13px; | |
| border-left: 1px solid rgba(155, 30, 43, 0.52); | |
| border-right: 1px solid rgba(155, 30, 43, 0.52); | |
| background: | |
| linear-gradient( | |
| 90deg, | |
| transparent, | |
| rgba(98, 14, 25, 0.72), | |
| rgba(181, 30, 45, 0.68), | |
| rgba(98, 14, 25, 0.72), | |
| transparent | |
| ); | |
| transform: | |
| translateX(-50%) | |
| skewX(-28deg); | |
| } | |
| .heading { | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 17px; | |
| margin-bottom: 28px; | |
| } | |
| .heading h2 { | |
| flex: 0 0 auto; | |
| margin: 0; | |
| color: #bf4651; | |
| font-family: "Cinzel", Georgia, serif; | |
| font-size: clamp(1.55rem, 3vw, 2.45rem); | |
| font-weight: 500; | |
| line-height: 1; | |
| letter-spacing: 0.028em; | |
| text-shadow: | |
| 0 0 12px rgba(148, 18, 35, 0.14); | |
| } | |
| .drop { | |
| display: block; | |
| flex: 1 1 auto; | |
| max-width: 190px; | |
| height: 2px; | |
| background: | |
| linear-gradient( | |
| 90deg, | |
| transparent, | |
| rgba(90, 14, 24, 0.72), | |
| #9e1b2a | |
| ); | |
| } | |
| .drop:last-child { | |
| transform: scaleX(-1); | |
| } | |
| .lead { | |
| max-width: 1010px; | |
| margin: 0 auto 30px; | |
| color: var(--text-soft); | |
| font-size: clamp(0.96rem, 1.28vw, 1.08rem); | |
| font-weight: 400; | |
| line-height: 1.86; | |
| text-align: center; | |
| } | |
| .lead strong { | |
| color: #cf5964; | |
| font-weight: 700; | |
| } | |
| .lead a { | |
| color: #b63a47; | |
| font-weight: 700; | |
| text-decoration: none; | |
| border-bottom: 1px solid rgba(142, 28, 41, 0.46); | |
| } | |
| .lead a:hover { | |
| color: #db5d69; | |
| border-bottom-color: #bd3544; | |
| } | |
| .fold { | |
| position: relative; | |
| width: 100%; | |
| overflow: hidden; | |
| border: 1px solid rgba(111, 22, 33, 0.86); | |
| background: | |
| linear-gradient( | |
| 180deg, | |
| #0e090a, | |
| #080607 | |
| ); | |
| box-shadow: | |
| inset 0 0 0 3px rgba(3, 2, 3, 0.68), | |
| 0 6px 18px rgba(0,0,0,0.25); | |
| } | |
| .fold summary { | |
| position: relative; | |
| display: flex; | |
| align-items: center; | |
| min-height: 65px; | |
| padding: 17px 64px 17px 23px; | |
| cursor: pointer; | |
| list-style: none; | |
| color: #bf4651; | |
| background: | |
| linear-gradient( | |
| 90deg, | |
| rgba(83, 10, 20, 0.16), | |
| rgba(10,7,8,0.82) 44%, | |
| rgba(77, 9, 18, 0.13) | |
| ); | |
| } | |
| .fold summary::-webkit-details-marker { | |
| display: none; | |
| } | |
| .fold-name { | |
| font-family: "JetBrains Mono", monospace; | |
| font-size: 0.79rem; | |
| font-weight: 600; | |
| letter-spacing: 0.07em; | |
| text-transform: uppercase; | |
| } | |
| .fold-icon { | |
| position: absolute; | |
| top: 50%; | |
| right: 25px; | |
| width: 20px; | |
| height: 20px; | |
| border: 1px solid #8e1825; | |
| background: | |
| linear-gradient( | |
| 135deg, | |
| #110609, | |
| #390812 | |
| ); | |
| transform: | |
| translateY(-50%) | |
| rotate(45deg); | |
| box-shadow: | |
| 0 0 8px rgba(138, 15, 31, 0.15); | |
| } | |
| .fold-icon::before, | |
| .fold-icon::after { | |
| content: ""; | |
| position: absolute; | |
| top: 50%; | |
| left: 50%; | |
| width: 9px; | |
| height: 1px; | |
| background: #c84552; | |
| transform: | |
| translate(-50%, -50%) | |
| rotate(-45deg); | |
| } | |
| .fold-icon::after { | |
| transform: | |
| translate(-50%, -50%) | |
| rotate(45deg); | |
| transition: transform 0.2s ease; | |
| } | |
| .fold[open] .fold-icon::after { | |
| transform: | |
| translate(-50%, -50%) | |
| rotate(-45deg); | |
| } | |
| .fold pre { | |
| margin: 0; | |
| padding: clamp(24px, 3.3vw, 36px); | |
| overflow-x: auto; | |
| color: #b7a2a4; | |
| font-family: "JetBrains Mono", Consolas, monospace; | |
| font-size: clamp(0.75rem, 1.05vw, 0.9rem); | |
| line-height: 1.72; | |
| white-space: pre; | |
| border-top: 1px solid rgba(108, 21, 33, 0.54); | |
| background: | |
| repeating-linear-gradient( | |
| 0deg, | |
| rgba(255,255,255,0.006) 0, | |
| rgba(255,255,255,0.006) 1px, | |
| transparent 1px, | |
| transparent 5px | |
| ), | |
| linear-gradient( | |
| 135deg, | |
| #090607, | |
| #0c0809 | |
| ); | |
| } | |
| .fold code { | |
| color: inherit; | |
| font-family: inherit; | |
| } | |
| .uses .heading h2 { | |
| font-size: clamp(1.24rem, 2.18vw, 1.84rem); | |
| white-space: nowrap; | |
| } | |
| .grid { | |
| position: relative; | |
| display: grid; | |
| grid-template-columns: repeat(2, minmax(0, 1fr)); | |
| grid-template-rows: repeat(2, minmax(188px, 1fr)); | |
| width: 100%; | |
| gap: 12px; | |
| padding: 10px; | |
| overflow: hidden; | |
| border: 1px solid rgba(106, 20, 31, 0.82); | |
| background: | |
| radial-gradient( | |
| circle at center, | |
| rgba(78, 8, 18, 0.09), | |
| transparent 44% | |
| ), | |
| linear-gradient( | |
| 135deg, | |
| #070506 0%, | |
| #10090b 50%, | |
| #070506 100% | |
| ); | |
| box-shadow: | |
| inset 0 0 0 3px rgba(3,2,3,0.72); | |
| } | |
| .grid::before { | |
| content: ""; | |
| position: absolute; | |
| top: 18px; | |
| bottom: 18px; | |
| left: 50%; | |
| width: 1px; | |
| pointer-events: none; | |
| background: | |
| linear-gradient( | |
| to bottom, | |
| transparent, | |
| rgba(93, 13, 24, 0.58) 12%, | |
| #8b1724 50%, | |
| rgba(93, 13, 24, 0.58) 88%, | |
| transparent | |
| ); | |
| transform: translateX(-50%); | |
| } | |
| .grid::after { | |
| content: ""; | |
| position: absolute; | |
| top: 50%; | |
| left: 18px; | |
| right: 18px; | |
| height: 1px; | |
| pointer-events: none; | |
| background: | |
| linear-gradient( | |
| 90deg, | |
| transparent, | |
| rgba(93, 13, 24, 0.58) 12%, | |
| #8b1724 50%, | |
| rgba(93, 13, 24, 0.58) 88%, | |
| transparent | |
| ); | |
| transform: translateY(-50%); | |
| } | |
| .item { | |
| position: relative; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| width: 100%; | |
| min-width: 0; | |
| min-height: 188px; | |
| overflow: hidden; | |
| border: 1px solid rgba(99, 19, 29, 0.76); | |
| background: | |
| radial-gradient( | |
| circle at 50% 15%, | |
| rgba(103, 11, 24, 0.08), | |
| transparent 47% | |
| ), | |
| linear-gradient( | |
| 180deg, | |
| #0d090a 0%, | |
| #080607 100% | |
| ); | |
| box-shadow: | |
| inset 0 0 0 3px rgba(3,2,3,0.66); | |
| } | |
| .item::before, | |
| .item::after { | |
| content: ""; | |
| position: absolute; | |
| left: 16%; | |
| right: 16%; | |
| height: 1px; | |
| pointer-events: none; | |
| background: | |
| linear-gradient( | |
| 90deg, | |
| transparent, | |
| rgba(112, 18, 30, 0.48) 24%, | |
| #92202c 50%, | |
| rgba(112, 18, 30, 0.48) 76%, | |
| transparent | |
| ); | |
| } | |
| .item::before { | |
| top: 12px; | |
| } | |
| .item::after { | |
| bottom: 12px; | |
| } | |
| .item-copy { | |
| position: relative; | |
| z-index: 2; | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: center; | |
| width: 100%; | |
| min-width: 0; | |
| height: 100%; | |
| padding: | |
| clamp(25px, 2.6vw, 34px) | |
| clamp(24px, 3.15vw, 40px); | |
| text-align: center; | |
| } | |
| .item h3 { | |
| margin: 0 0 12px; | |
| max-width: 100%; | |
| color: #bc424e; | |
| font-family: "Cinzel", Georgia, serif; | |
| font-size: clamp(0.92rem, 1.08vw, 1.08rem); | |
| font-weight: 600; | |
| line-height: 1.12; | |
| letter-spacing: 0.012em; | |
| white-space: nowrap; | |
| text-align: center; | |
| } | |
| .item h3::after { | |
| content: ""; | |
| display: block; | |
| width: 44px; | |
| height: 1px; | |
| margin: 9px auto 0; | |
| background: | |
| linear-gradient( | |
| 90deg, | |
| transparent, | |
| #6c111e, | |
| #b72d3b, | |
| #6c111e, | |
| transparent | |
| ); | |
| } | |
| .item p { | |
| margin: 0 auto; | |
| min-width: 0; | |
| max-width: 94%; | |
| color: #9e8a8c; | |
| font-size: clamp(0.92rem, 1vw, 1rem); | |
| font-weight: 400; | |
| line-height: 1.62; | |
| letter-spacing: 0.001em; | |
| white-space: normal; | |
| overflow-wrap: break-word; | |
| text-align: center; | |
| } | |
| .bottom-rule { | |
| position: relative; | |
| z-index: 2; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| width: min(640px, 72%); | |
| margin: 39px auto 4px; | |
| } | |
| .bottom-rule span { | |
| flex: 1; | |
| height: 1px; | |
| background: | |
| linear-gradient( | |
| 90deg, | |
| transparent, | |
| rgba(106, 17, 28, 0.72), | |
| #9a1b29 | |
| ); | |
| } | |
| .bottom-rule span:last-child { | |
| transform: scaleX(-1); | |
| } | |
| .bottom-rule i { | |
| display: block; | |
| flex: 0 0 25px; | |
| width: 25px; | |
| height: 25px; | |
| margin: 0 16px; | |
| border: 1px solid #9f1b2a; | |
| background: | |
| linear-gradient( | |
| 135deg, | |
| #110508, | |
| #75101c 43%, | |
| #cf3041 51%, | |
| #4f0912 67%, | |
| #0d0406 | |
| ); | |
| transform: rotate(45deg); | |
| box-shadow: | |
| 0 0 0 4px rgba(22,4,7,0.92), | |
| 0 0 15px rgba(158, 15, 33, 0.19); | |
| } | |
| @media (max-width: 760px) { | |
| .card { | |
| margin: 24px auto; | |
| padding: 35px 27px 44px; | |
| } | |
| .top { | |
| padding-bottom: 32px; | |
| } | |
| .top h1 { | |
| font-size: clamp(1.20rem, 5.95cqi, 2.72rem); | |
| } | |
| .media { | |
| margin-bottom: 31px; | |
| } | |
| .section { | |
| padding: 29px 25px; | |
| } | |
| .uses .heading h2 { | |
| font-size: clamp(1.14rem, 3.5vw, 1.44rem); | |
| } | |
| .grid { | |
| grid-template-rows: | |
| repeat(2, minmax(172px, 1fr)); | |
| gap: 10px; | |
| padding: 8px; | |
| } | |
| .item { | |
| min-height: 172px; | |
| } | |
| .item-copy { | |
| padding: 23px 20px; | |
| } | |
| .item h3 { | |
| font-size: | |
| clamp(0.84rem, 2.1vw, 0.98rem); | |
| } | |
| .item p { | |
| max-width: 96%; | |
| font-size: | |
| clamp(0.84rem, 1.9vw, 0.94rem); | |
| line-height: 1.54; | |
| } | |
| } | |
| @media (max-width: 620px) { | |
| .card { | |
| padding: 29px 16px 37px; | |
| box-shadow: | |
| inset 0 0 0 3px rgba(28, 8, 11, 0.95), | |
| inset 0 0 0 4px rgba(145, 25, 38, 0.20), | |
| inset 0 0 75px rgba(0,0,0,0.82); | |
| } | |
| .card::before { | |
| inset: 12px; | |
| } | |
| .trim { | |
| display: none; | |
| } | |
| .top h1 { | |
| font-size: clamp(0.98rem, 6.0cqi, 1.66rem); | |
| letter-spacing: 0.005em; | |
| } | |
| .rule { | |
| width: 91%; | |
| margin-top: 20px; | |
| } | |
| .media { | |
| padding: 9px; | |
| margin-bottom: 25px; | |
| } | |
| .corner { | |
| width: 35px; | |
| height: 35px; | |
| } | |
| .section { | |
| padding: 27px 17px; | |
| margin-bottom: 27px; | |
| } | |
| .heading { | |
| gap: 10px; | |
| margin-bottom: 23px; | |
| } | |
| .heading h2 { | |
| font-size: 1.42rem; | |
| } | |
| .uses .heading h2 { | |
| font-size: 1.04rem; | |
| } | |
| .lead { | |
| font-size: 0.91rem; | |
| line-height: 1.72; | |
| } | |
| .grid { | |
| grid-template-columns: | |
| repeat(2, minmax(0, 1fr)); | |
| grid-template-rows: | |
| repeat(2, minmax(154px, 1fr)); | |
| gap: 8px; | |
| padding: 6px; | |
| } | |
| .grid::before { | |
| top: 14px; | |
| bottom: 14px; | |
| } | |
| .grid::after { | |
| left: 14px; | |
| right: 14px; | |
| } | |
| .item { | |
| min-height: 154px; | |
| } | |
| .item-copy { | |
| padding: 21px 12px; | |
| } | |
| .item::before, | |
| .item::after { | |
| left: 12%; | |
| right: 12%; | |
| } | |
| .item h3 { | |
| font-size: | |
| clamp(0.70rem, 2.45vw, 0.88rem); | |
| letter-spacing: -0.002em; | |
| } | |
| .item p { | |
| max-width: 98%; | |
| font-size: | |
| clamp(0.74rem, 2.15vw, 0.86rem); | |
| line-height: 1.48; | |
| } | |
| .fold summary { | |
| min-height: 58px; | |
| padding-left: 17px; | |
| } | |
| .fold-name { | |
| font-size: 0.68rem; | |
| } | |
| .fold pre { | |
| padding: 20px 17px; | |
| font-size: 0.72rem; | |
| } | |
| .bottom-rule { | |
| width: 80%; | |
| margin-top: 31px; | |
| } | |
| } | |
| @media (max-width: 470px) { | |
| .grid { | |
| grid-template-columns: 1fr; | |
| grid-template-rows: none; | |
| gap: 9px; | |
| } | |
| .grid::before, | |
| .grid::after { | |
| display: none; | |
| } | |
| .item { | |
| min-height: 132px; | |
| } | |
| .item-copy { | |
| padding: 22px 18px; | |
| } | |
| .item h3 { | |
| font-size: 0.94rem; | |
| } | |
| .item p { | |
| max-width: 96%; | |
| font-size: 0.84rem; | |
| line-height: 1.5; | |
| } | |
| } | |
| </style> |