Image-Text-to-Text
Transformers
Safetensors
gemma4
mergekit
Merge
roleplay
storytelling
conversational
Instructions to use Cyclone-Labs/Twisted-Cyclone-31B with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use Cyclone-Labs/Twisted-Cyclone-31B with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("image-text-to-text", model="Cyclone-Labs/Twisted-Cyclone-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("Cyclone-Labs/Twisted-Cyclone-31B") model = AutoModelForMultimodalLM.from_pretrained("Cyclone-Labs/Twisted-Cyclone-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 Cyclone-Labs/Twisted-Cyclone-31B with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "Cyclone-Labs/Twisted-Cyclone-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": "Cyclone-Labs/Twisted-Cyclone-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/Cyclone-Labs/Twisted-Cyclone-31B
- SGLang
How to use Cyclone-Labs/Twisted-Cyclone-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 "Cyclone-Labs/Twisted-Cyclone-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": "Cyclone-Labs/Twisted-Cyclone-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 "Cyclone-Labs/Twisted-Cyclone-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": "Cyclone-Labs/Twisted-Cyclone-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 Cyclone-Labs/Twisted-Cyclone-31B with Docker Model Runner:
docker model run hf.co/Cyclone-Labs/Twisted-Cyclone-31B
| base_model: | |
| - Gryphe/Pantheon-Reasoning-31B-1.1 | |
| - Vortex5/Glimmering-Citrus-31B | |
| - google/gemma-4-31B-it | |
| - Nimbz/Versipellis-31B | |
| - Ateron/Gemma-4-Novelist-Eclipse-31B | |
| library_name: transformers | |
| tags: | |
| - mergekit | |
| - merge | |
| - roleplay | |
| - storytelling | |
| license: apache-2.0 | |
| <section class="card"> | |
| <div class="side-ornament side-ornament-left" aria-hidden="true"> | |
| <span></span><span></span><span></span><span></span><span></span> | |
| </div> | |
| <div class="side-ornament side-ornament-right" aria-hidden="true"> | |
| <span></span><span></span><span></span><span></span><span></span> | |
| </div> | |
| <div class="ambient-haze ambient-haze-a" aria-hidden="true"></div> | |
| <div class="ambient-haze ambient-haze-b" aria-hidden="true"></div> | |
| <header class="header"> | |
| <div class="top-mark" aria-hidden="true"> | |
| <i></i> | |
| <i></i> | |
| <i></i> | |
| <i></i> | |
| <i></i> | |
| <b></b> | |
| </div> | |
| <h1>Twisted-Cyclone-31B</h1> | |
| <div class="title-rule" aria-hidden="true"> | |
| <span></span> | |
| <b></b> | |
| <span></span> | |
| </div> | |
| </header> | |
| <figure class="media"> | |
| <div class="media-frame"> | |
| <div class="media-inner"> | |
| <img | |
| src="https://cdn-uploads.huggingface.co/production/uploads/6669a3a617b838fda45637b8/XB6ZtaZCvtGpQoobYldkl.png" | |
| alt="Twisted-Cyclone-31B artwork" | |
| > | |
| </div> | |
| </div> | |
| </figure> | |
| <section class="panel overview"> | |
| <div class="heading"> | |
| <span></span> | |
| <h2>Overview</h2> | |
| <span></span> | |
| </div> | |
| <p class="lead"> | |
| <strong>Twisted-Cyclone-31B</strong> was created by merging | |
| <a href="https://huggingface.co/Ateron/Gemma-4-Novelist-Eclipse-31B">Gemma-4-Novelist-Eclipse-31B</a>, | |
| <a href="https://huggingface.co/Vortex5/Glimmering-Citrus-31B">Glimmering-Citrus-31B</a>, | |
| <a href="https://huggingface.co/Gryphe/Pantheon-Reasoning-31B-1.1">Pantheon-Reasoning-31B-1.1</a>, | |
| and | |
| <a href="https://huggingface.co/Nimbz/Versipellis-31B">Versipellis-31B</a> | |
| with | |
| <a href="https://huggingface.co/google/gemma-4-31B-it">Gemma-4-31B-it</a> | |
| as the base using a custom method. | |
| </p> | |
| <details class="fold"> | |
| <summary> | |
| <span class="fold-name">Merge Configuration</span> | |
| <span class="fold-icon" aria-hidden="true"></span> | |
| </summary> | |
| <pre><code>base_model: google/gemma-4-31B-it | |
| models: | |
| - model: Ateron/Gemma-4-Novelist-Eclipse-31B | |
| - model: Vortex5/Glimmering-Citrus-31B | |
| - model: Gryphe/Pantheon-Reasoning-31B-1.1 | |
| - model: Nimbz/Versipellis-31B | |
| merge_method: arcs | |
| chat_template: auto | |
| parameters: | |
| strength: 0.98 | |
| sharp: 0.52 | |
| voice: 0.68 | |
| envelope: 1.15 | |
| tol: 1e-7 | |
| dtype: float32 | |
| out_dtype: bfloat16 | |
| tokenizer: | |
| source: union</code></pre> | |
| </details> | |
| </section> | |
| <section class="panel uses"> | |
| <div class="heading"> | |
| <span></span> | |
| <h2>Intended Use</h2> | |
| <span></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> | |
| <footer class="footer" aria-hidden="true"> | |
| <span></span> | |
| <div class="footer-mark"> | |
| <i></i> | |
| <i></i> | |
| <i></i> | |
| <i></i> | |
| </div> | |
| <span></span> | |
| </footer> | |
| </section> | |
| <style> | |
| @import url("https://fonts.googleapis.com/css2?family=Barlow+Condensed:wght@500;600;700;800&family=IBM+Plex+Mono:wght@400;500;600&family=Manrope:wght@400;500;600;700&display=swap"); | |
| .card, | |
| .card * { | |
| box-sizing: border-box; | |
| } | |
| .card { | |
| --bg-1: #040506; | |
| --bg-2: #0b0d10; | |
| --bg-3: #12161b; | |
| --bg-4: #1a2027; | |
| --panel-1: rgba(10, 12, 15, 0.95); | |
| --panel-2: rgba(18, 22, 28, 0.96); | |
| --panel-3: rgba(29, 35, 43, 0.72); | |
| --line: rgba(197, 207, 220, 0.18); | |
| --line-strong: rgba(224, 232, 241, 0.42); | |
| --glow: rgba(230, 236, 245, 0.20); | |
| --text: #c3ccd6; | |
| --text-soft: #8f9aa6; | |
| --text-dim: #727d89; | |
| --text-strong: #eef2f6; | |
| position: relative; | |
| isolation: isolate; | |
| container-type: inline-size; | |
| width: 100%; | |
| max-width: 1260px; | |
| margin: 44px auto; | |
| padding: clamp(34px, 5vw, 68px); | |
| overflow: hidden; | |
| color: var(--text); | |
| font-family: "Manrope", Arial, sans-serif; | |
| border: 1px solid rgba(238, 242, 246, 0.12); | |
| border-radius: 28px 8px 28px 8px; | |
| background: | |
| radial-gradient(circle at 50% 0%, rgba(255,255,255,0.05), transparent 28%), | |
| radial-gradient(circle at 14% 30%, rgba(255,255,255,0.03), transparent 18%), | |
| radial-gradient(circle at 84% 64%, rgba(255,255,255,0.025), transparent 22%), | |
| repeating-linear-gradient(0deg, rgba(255,255,255,0.009) 0 1px, transparent 1px 7px), | |
| linear-gradient(145deg, var(--bg-1) 0%, var(--bg-2) 28%, var(--bg-3) 64%, var(--bg-1) 100%); | |
| box-shadow: | |
| inset 0 0 0 1px rgba(255,255,255,0.02), | |
| inset 0 0 100px rgba(0,0,0,0.56), | |
| 0 22px 58px rgba(0,0,0,0.42); | |
| transition: box-shadow 0.35s ease, border-color 0.35s ease, transform 0.35s ease; | |
| } | |
| .card::before { | |
| content: ""; | |
| position: absolute; | |
| inset: 14px; | |
| z-index: -1; | |
| pointer-events: none; | |
| border: 1px solid rgba(240, 244, 248, 0.08); | |
| border-radius: 20px 5px 20px 5px; | |
| clip-path: polygon(0 0, 42% 0, 46% 10px, 54% 10px, 58% 0, 100% 0, 100% 42%, calc(100% - 10px) 46%, calc(100% - 10px) 54%, 100% 58%, 100% 100%, 58% 100%, 54% calc(100% - 10px), 46% calc(100% - 10px), 42% 100%, 0 100%, 0 58%, 10px 54%, 10px 46%, 0 42%); | |
| } | |
| .card::after { | |
| content: ""; | |
| position: absolute; | |
| inset: 0; | |
| z-index: 16; | |
| pointer-events: none; | |
| opacity: 0.22; | |
| background: | |
| linear-gradient(115deg, transparent 0 18%, rgba(255,255,255,0.018) 22%, transparent 28%), | |
| linear-gradient(65deg, transparent 0 72%, rgba(255,255,255,0.012) 78%, transparent 84%); | |
| mix-blend-mode: screen; | |
| } | |
| .card:hover { | |
| border-color: rgba(238, 242, 246, 0.20); | |
| box-shadow: | |
| inset 0 0 0 1px rgba(255,255,255,0.03), | |
| inset 0 0 120px rgba(0,0,0,0.60), | |
| 0 26px 68px rgba(0,0,0,0.48), | |
| 0 0 24px rgba(255,255,255,0.05); | |
| } | |
| .side-ornament { | |
| position: absolute; | |
| top: 66px; | |
| bottom: 66px; | |
| z-index: 0; | |
| width: 44px; | |
| pointer-events: none; | |
| display: flex; | |
| flex-direction: column; | |
| align-items: center; | |
| justify-content: space-between; | |
| } | |
| .side-ornament::before { | |
| content: ""; | |
| position: absolute; | |
| inset: 0; | |
| opacity: 0.55; | |
| background: | |
| linear-gradient(180deg, transparent, rgba(255,255,255,0.02), transparent), | |
| repeating-linear-gradient(180deg, transparent 0 15px, rgba(255,255,255,0.035) 16px 17px, transparent 18px 34px); | |
| } | |
| .side-ornament span { | |
| display: block; | |
| width: 100%; | |
| height: 18%; | |
| border: 1px solid rgba(226, 233, 242, 0.14); | |
| background: | |
| radial-gradient(circle at 50% 35%, rgba(255,255,255,0.08), transparent 46%), | |
| linear-gradient(180deg, rgba(255,255,255,0.03), rgba(255,255,255,0.008)); | |
| clip-path: polygon(50% 0, 84% 17%, 100% 48%, 86% 78%, 58% 100%, 42% 100%, 14% 78%, 0 48%, 16% 17%); | |
| filter: drop-shadow(0 0 8px rgba(255,255,255,0.03)); | |
| transition: transform 0.35s ease, border-color 0.35s ease, filter 0.35s ease; | |
| } | |
| .side-ornament-left { | |
| left: 4px; | |
| } | |
| .side-ornament-right { | |
| right: 4px; | |
| transform: scaleX(-1); | |
| } | |
| .card:hover .side-ornament span { | |
| border-color: rgba(238, 242, 246, 0.22); | |
| transform: scale(1.03); | |
| filter: drop-shadow(0 0 11px rgba(255,255,255,0.06)); | |
| } | |
| .ambient-haze { | |
| position: absolute; | |
| z-index: 0; | |
| width: 360px; | |
| height: 360px; | |
| border-radius: 50%; | |
| pointer-events: none; | |
| opacity: 0.09; | |
| filter: blur(34px); | |
| background: conic-gradient(from 0deg, transparent 0 12%, rgba(255,255,255,0.12) 16% 20%, transparent 24% 38%, rgba(255,255,255,0.07) 43% 48%, transparent 52% 72%, rgba(255,255,255,0.09) 78% 82%, transparent 86% 100%); | |
| animation: drift-spin 20s linear infinite; | |
| } | |
| .ambient-haze-a { | |
| top: -170px; | |
| left: -120px; | |
| } | |
| .ambient-haze-b { | |
| right: -150px; | |
| bottom: 2%; | |
| animation-direction: reverse; | |
| animation-duration: 24s; | |
| } | |
| .header { | |
| position: relative; | |
| z-index: 2; | |
| padding: 10px 12px 40px; | |
| text-align: center; | |
| } | |
| .top-mark { | |
| position: relative; | |
| width: 96px; | |
| height: 82px; | |
| margin: 0 auto 8px; | |
| } | |
| .top-mark i, | |
| .top-mark b { | |
| position: absolute; | |
| left: 50%; | |
| transform: translateX(-50%); | |
| } | |
| .top-mark i { | |
| height: 8px; | |
| border: 1px solid rgba(239, 244, 248, 0.22); | |
| border-radius: 999px; | |
| background: linear-gradient(180deg, rgba(255,255,255,0.06), rgba(255,255,255,0.01)); | |
| box-shadow: 0 0 12px rgba(255,255,255,0.03); | |
| } | |
| .top-mark i:nth-child(1) { | |
| top: 6px; | |
| width: 66px; | |
| transform: translateX(-50%) rotate(-6deg); | |
| } | |
| .top-mark i:nth-child(2) { | |
| top: 18px; | |
| width: 54px; | |
| transform: translateX(-50%) rotate(5deg); | |
| } | |
| .top-mark i:nth-child(3) { | |
| top: 30px; | |
| width: 42px; | |
| transform: translateX(-50%) rotate(-4deg); | |
| } | |
| .top-mark i:nth-child(4) { | |
| top: 42px; | |
| width: 28px; | |
| transform: translateX(-50%) rotate(4deg); | |
| } | |
| .top-mark i:nth-child(5) { | |
| top: 54px; | |
| width: 16px; | |
| transform: translateX(-50%) rotate(-3deg); | |
| } | |
| .top-mark b { | |
| top: 65px; | |
| width: 6px; | |
| height: 11px; | |
| border-radius: 999px; | |
| background: linear-gradient(180deg, rgba(255,255,255,0.80), rgba(255,255,255,0.12)); | |
| box-shadow: 0 0 14px rgba(255,255,255,0.14); | |
| } | |
| .header h1 { | |
| margin: 0; | |
| color: var(--text-strong); | |
| font-family: "Barlow Condensed", Arial, sans-serif; | |
| font-size: clamp(2.25rem, 7cqi, 5.85rem); | |
| font-weight: 800; | |
| line-height: 0.92; | |
| letter-spacing: -0.03em; | |
| text-transform: uppercase; | |
| text-shadow: | |
| 0 1px 0 rgba(255,255,255,0.20), | |
| 0 0 18px rgba(255,255,255,0.05), | |
| 0 10px 32px rgba(0,0,0,0.40); | |
| transition: text-shadow 0.35s ease, transform 0.35s ease; | |
| } | |
| .card:hover .header h1 { | |
| transform: translateY(-1px); | |
| text-shadow: | |
| 0 1px 0 rgba(255,255,255,0.22), | |
| 0 0 26px rgba(255,255,255,0.08), | |
| 0 10px 36px rgba(0,0,0,0.46); | |
| } | |
| .title-rule { | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| width: min(830px, 88%); | |
| margin: 28px auto 0; | |
| } | |
| .title-rule span { | |
| flex: 1; | |
| height: 2px; | |
| background: linear-gradient(90deg, transparent, rgba(240, 244, 248, 0.42), rgba(255,255,255,0.08)); | |
| clip-path: polygon(0 0, 100% 0, 97% 100%, 3% 100%); | |
| } | |
| .title-rule span:last-child { | |
| transform: scaleX(-1); | |
| } | |
| .title-rule b { | |
| flex: 0 0 26px; | |
| width: 26px; | |
| height: 26px; | |
| margin: 0 16px; | |
| border: 1px solid rgba(240, 244, 248, 0.28); | |
| transform: rotate(45deg); | |
| background: | |
| radial-gradient(circle, rgba(255,255,255,0.25) 0 12%, transparent 13%), | |
| linear-gradient(135deg, rgba(255,255,255,0.05), rgba(255,255,255,0.01)); | |
| box-shadow: 0 0 18px rgba(255,255,255,0.04); | |
| } | |
| .media { | |
| position: relative; | |
| z-index: 2; | |
| width: 100%; | |
| margin: 0 auto 38px; | |
| padding: 12px; | |
| overflow: hidden; | |
| border: 1px solid rgba(238, 242, 246, 0.10); | |
| border-radius: 24px 6px 24px 6px; | |
| background: | |
| radial-gradient(circle at 50% 0%, rgba(255,255,255,0.04), transparent 34%), | |
| linear-gradient(135deg, rgba(16,20,25,0.98), rgba(5,7,9,0.98)); | |
| box-shadow: | |
| inset 0 0 0 3px rgba(0,0,0,0.56), | |
| 0 16px 38px rgba(0,0,0,0.34); | |
| } | |
| .media::before { | |
| content: ""; | |
| position: absolute; | |
| inset: 6px; | |
| z-index: 4; | |
| pointer-events: none; | |
| border: 1px solid rgba(255,255,255,0.07); | |
| border-radius: 18px 4px 18px 4px; | |
| } | |
| .media::after { | |
| content: ""; | |
| position: absolute; | |
| inset: 0; | |
| z-index: 5; | |
| pointer-events: none; | |
| opacity: 0; | |
| background: linear-gradient(112deg, transparent 26%, rgba(255,255,255,0.08) 46%, rgba(255,255,255,0.02) 54%, transparent 71%); | |
| transform: translateX(-40%); | |
| transition: opacity 0.35s ease, transform 0.6s ease; | |
| } | |
| .media:hover::after { | |
| opacity: 1; | |
| transform: translateX(24%); | |
| } | |
| .media-frame { | |
| position: relative; | |
| padding: clamp(8px, 1.2vw, 13px); | |
| overflow: hidden; | |
| background: | |
| linear-gradient(135deg, rgba(255,255,255,0.18), rgba(255,255,255,0.03) 36%, rgba(255,255,255,0.10) 72%, rgba(255,255,255,0.02)); | |
| clip-path: polygon(0 16px, 16px 0, 78% 0, 81% 8px, 88% 8px, 91% 0, 100% 0, 100% calc(100% - 16px), calc(100% - 16px) 100%, 22% 100%, 19% calc(100% - 8px), 12% calc(100% - 8px), 9% 100%, 0 100%); | |
| } | |
| .media-inner { | |
| position: relative; | |
| overflow: hidden; | |
| background: | |
| radial-gradient(circle at center, rgba(27,33,40,0.86), rgba(4,5,7,1) 72%); | |
| clip-path: inherit; | |
| } | |
| .media-inner::after { | |
| content: ""; | |
| position: absolute; | |
| inset: 0; | |
| pointer-events: none; | |
| box-shadow: | |
| inset 0 0 92px rgba(0,0,0,0.44), | |
| inset 0 0 0 1px rgba(255,255,255,0.06); | |
| } | |
| .media img { | |
| display: block; | |
| width: 100%; | |
| max-width: 100%; | |
| height: auto; | |
| margin: 0; | |
| border: 0; | |
| object-fit: contain; | |
| transition: transform 0.55s ease, filter 0.55s ease; | |
| } | |
| .media:hover img { | |
| transform: scale(1.01); | |
| filter: contrast(1.04) saturate(1.02); | |
| } | |
| .panel { | |
| position: relative; | |
| z-index: 2; | |
| margin-bottom: 32px; | |
| padding: clamp(28px, 4vw, 48px); | |
| overflow: hidden; | |
| border: 1px solid rgba(238, 242, 246, 0.10); | |
| border-radius: 22px 5px 22px 5px; | |
| background: | |
| radial-gradient(circle at 100% 0%, rgba(255,255,255,0.04), transparent 24%), | |
| radial-gradient(circle at 0% 100%, rgba(255,255,255,0.025), transparent 26%), | |
| linear-gradient(145deg, var(--panel-2), var(--panel-1)); | |
| box-shadow: | |
| inset 0 0 0 1px rgba(255,255,255,0.02), | |
| 0 14px 30px rgba(0,0,0,0.25); | |
| transition: transform 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease; | |
| } | |
| .panel::before, | |
| .panel::after { | |
| content: ""; | |
| position: absolute; | |
| pointer-events: none; | |
| } | |
| .panel::before { | |
| top: 0; | |
| left: 0; | |
| width: 170px; | |
| height: 16px; | |
| opacity: 0.40; | |
| background: linear-gradient(90deg, rgba(255,255,255,0.24), rgba(255,255,255,0.05), transparent); | |
| clip-path: polygon(0 0, 100% 0, 84% 100%, 10% 100%); | |
| } | |
| .panel::after { | |
| right: 0; | |
| bottom: 0; | |
| width: 190px; | |
| height: 16px; | |
| opacity: 0.25; | |
| background: linear-gradient(90deg, transparent, rgba(255,255,255,0.05), rgba(255,255,255,0.20)); | |
| clip-path: polygon(16% 0, 90% 0, 100% 100%, 0 100%); | |
| } | |
| .panel:hover { | |
| transform: translateY(-3px); | |
| border-color: rgba(238, 242, 246, 0.16); | |
| box-shadow: | |
| inset 0 0 0 1px rgba(255,255,255,0.025), | |
| 0 18px 38px rgba(0,0,0,0.30), | |
| 0 0 20px rgba(255,255,255,0.035); | |
| } | |
| .heading { | |
| position: relative; | |
| z-index: 2; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| gap: 18px; | |
| margin-bottom: 28px; | |
| } | |
| .heading span { | |
| flex: 1 1 auto; | |
| max-width: 200px; | |
| height: 8px; | |
| background: linear-gradient(90deg, transparent, rgba(255,255,255,0.11), rgba(255,255,255,0.44)); | |
| clip-path: polygon(0 43%, 82% 43%, 87% 0, 100% 50%, 87% 100%, 82% 57%, 0 57%); | |
| } | |
| .heading span:last-child { | |
| transform: scaleX(-1); | |
| } | |
| .heading h2 { | |
| flex: 0 0 auto; | |
| margin: 0; | |
| color: var(--text-strong); | |
| font-family: "Barlow Condensed", Arial, sans-serif; | |
| font-size: clamp(1.62rem, 3vw, 2.4rem); | |
| font-weight: 700; | |
| line-height: 1; | |
| letter-spacing: 0.015em; | |
| text-transform: uppercase; | |
| } | |
| .lead { | |
| position: relative; | |
| z-index: 2; | |
| max-width: 1010px; | |
| margin: 0 auto 30px; | |
| color: var(--text-soft); | |
| font-size: clamp(0.95rem, 1.22vw, 1.05rem); | |
| line-height: 1.84; | |
| text-align: center; | |
| } | |
| .lead strong { | |
| color: var(--text-strong); | |
| font-weight: 700; | |
| } | |
| .lead a { | |
| color: #d8dee6; | |
| font-weight: 700; | |
| text-decoration: none; | |
| border-bottom: 1px solid rgba(238, 242, 246, 0.20); | |
| transition: color 0.2s ease, border-color 0.2s ease, text-shadow 0.2s ease; | |
| } | |
| .lead a:hover { | |
| color: #ffffff; | |
| border-bottom-color: rgba(255,255,255,0.55); | |
| text-shadow: 0 0 10px rgba(255,255,255,0.10); | |
| } | |
| .fold { | |
| position: relative; | |
| z-index: 2; | |
| width: 100%; | |
| overflow: hidden; | |
| border: 1px solid rgba(238, 242, 246, 0.10); | |
| border-radius: 14px 4px 14px 4px; | |
| background: linear-gradient(180deg, rgba(8,10,12,0.98), rgba(13,17,21,0.98)); | |
| box-shadow: inset 0 0 0 2px rgba(0,0,0,0.28); | |
| transition: border-color 0.3s ease, box-shadow 0.3s ease; | |
| } | |
| .fold:hover { | |
| border-color: rgba(238, 242, 246, 0.16); | |
| box-shadow: inset 0 0 0 2px rgba(0,0,0,0.30), 0 0 16px rgba(255,255,255,0.03); | |
| } | |
| .fold summary { | |
| position: relative; | |
| display: flex; | |
| align-items: center; | |
| min-height: 68px; | |
| padding: 16px 68px 16px 22px; | |
| cursor: pointer; | |
| list-style: none; | |
| color: var(--text-strong); | |
| background: | |
| linear-gradient(90deg, rgba(255,255,255,0.035), transparent 42%, rgba(255,255,255,0.025)), | |
| #0b0f13; | |
| transition: background 0.25s ease; | |
| } | |
| .fold summary:hover { | |
| background: | |
| linear-gradient(90deg, rgba(255,255,255,0.055), transparent 42%, rgba(255,255,255,0.04)), | |
| #0c1115; | |
| } | |
| .fold summary::-webkit-details-marker { | |
| display: none; | |
| } | |
| .fold-name { | |
| font-family: "Barlow Condensed", Arial, sans-serif; | |
| font-size: 1.06rem; | |
| font-weight: 700; | |
| letter-spacing: 0.05em; | |
| text-transform: uppercase; | |
| } | |
| .fold-icon { | |
| position: absolute; | |
| top: 50%; | |
| right: 22px; | |
| width: 28px; | |
| height: 28px; | |
| border: 1px solid rgba(240, 244, 248, 0.24); | |
| transform: translateY(-50%) rotate(45deg); | |
| background: rgba(255,255,255,0.03); | |
| transition: transform 0.25s ease, background 0.25s ease, box-shadow 0.25s ease; | |
| } | |
| .fold-icon::before, | |
| .fold-icon::after { | |
| content: ""; | |
| position: absolute; | |
| top: 50%; | |
| left: 50%; | |
| width: 10px; | |
| height: 1px; | |
| background: #eef2f6; | |
| transform: translate(-50%, -50%) rotate(-45deg); | |
| } | |
| .fold-icon::after { | |
| transform: translate(-50%, -50%) rotate(45deg); | |
| } | |
| .fold[open] .fold-icon { | |
| transform: translateY(-50%) rotate(135deg); | |
| background: rgba(255,255,255,0.07); | |
| box-shadow: 0 0 12px rgba(255,255,255,0.04); | |
| } | |
| .fold pre { | |
| margin: 0; | |
| padding: clamp(22px, 3.2vw, 36px); | |
| overflow-x: auto; | |
| color: #adb6c0; | |
| font-family: "IBM Plex Mono", Consolas, monospace; | |
| font-size: clamp(0.74rem, 1.03vw, 0.88rem); | |
| line-height: 1.72; | |
| white-space: pre; | |
| border-top: 1px solid rgba(255,255,255,0.08); | |
| background: | |
| repeating-linear-gradient(0deg, rgba(255,255,255,0.008) 0 1px, transparent 1px 6px), | |
| linear-gradient(145deg, #06080a, #0d1116); | |
| } | |
| .fold code { | |
| color: inherit; | |
| font-family: inherit; | |
| } | |
| .grid { | |
| position: relative; | |
| z-index: 2; | |
| display: grid; | |
| grid-template-columns: repeat(2, minmax(0, 1fr)); | |
| grid-template-rows: repeat(2, minmax(170px, 1fr)); | |
| gap: 12px; | |
| padding: 10px; | |
| border: 1px solid rgba(238, 242, 246, 0.08); | |
| border-radius: 16px 4px 16px 4px; | |
| background: | |
| radial-gradient(circle at center, rgba(255,255,255,0.02), transparent 44%), | |
| linear-gradient(145deg, rgba(10,12,15,0.94), rgba(19,23,28,0.86), rgba(7,9,12,0.94)); | |
| box-shadow: inset 0 0 0 2px rgba(0,0,0,0.34); | |
| } | |
| .item { | |
| position: relative; | |
| min-width: 0; | |
| min-height: 170px; | |
| overflow: hidden; | |
| border: 1px solid rgba(238, 242, 246, 0.10); | |
| border-radius: 14px 4px 14px 4px; | |
| background: | |
| radial-gradient(circle at 100% 0%, rgba(255,255,255,0.035), transparent 34%), | |
| linear-gradient(145deg, rgba(17,20,25,0.95), rgba(8,10,12,0.98)); | |
| box-shadow: inset 0 0 0 2px rgba(0,0,0,0.32); | |
| transition: transform 0.25s ease, border-color 0.25s ease, box-shadow 0.25s ease, background 0.25s ease; | |
| } | |
| .item::before { | |
| content: ""; | |
| position: absolute; | |
| top: 0; | |
| left: 0; | |
| width: 100px; | |
| height: 10px; | |
| opacity: 0.35; | |
| background: linear-gradient(90deg, rgba(255,255,255,0.34), rgba(255,255,255,0.05), transparent); | |
| clip-path: polygon(0 0, 100% 0, 82% 100%, 10% 100%); | |
| } | |
| .item::after { | |
| content: ""; | |
| position: absolute; | |
| right: -34px; | |
| bottom: -34px; | |
| width: 104px; | |
| height: 104px; | |
| border: 1px solid rgba(255,255,255,0.08); | |
| border-radius: 50%; | |
| box-shadow: | |
| 0 0 0 12px rgba(255,255,255,0.018), | |
| 0 0 0 24px rgba(255,255,255,0.010); | |
| transition: transform 0.35s ease, border-color 0.35s ease; | |
| } | |
| .item:hover { | |
| transform: translateY(-4px); | |
| border-color: rgba(238, 242, 246, 0.18); | |
| background: | |
| radial-gradient(circle at 100% 0%, rgba(255,255,255,0.055), transparent 34%), | |
| linear-gradient(145deg, rgba(21,26,32,0.97), rgba(9,11,14,1)); | |
| box-shadow: | |
| inset 0 0 0 2px rgba(0,0,0,0.32), | |
| 0 14px 28px rgba(0,0,0,0.25), | |
| 0 0 16px rgba(255,255,255,0.03); | |
| } | |
| .item:hover::after { | |
| transform: rotate(18deg) scale(1.08); | |
| border-color: rgba(255,255,255,0.12); | |
| } | |
| .item-copy { | |
| position: relative; | |
| z-index: 2; | |
| display: flex; | |
| flex-direction: column; | |
| justify-content: center; | |
| align-items: center; | |
| width: 100%; | |
| min-width: 0; | |
| height: 100%; | |
| padding: 22px 18px; | |
| text-align: center; | |
| } | |
| .item h3 { | |
| margin: 0 0 10px; | |
| max-width: 100%; | |
| color: var(--text-strong); | |
| font-family: "Barlow Condensed", Arial, sans-serif; | |
| font-size: clamp(0.90rem, 1.08vw, 1.02rem); | |
| font-weight: 700; | |
| line-height: 1.1; | |
| letter-spacing: 0.02em; | |
| text-transform: uppercase; | |
| white-space: nowrap; | |
| } | |
| .item h3::after { | |
| content: ""; | |
| display: block; | |
| width: 42px; | |
| height: 1px; | |
| margin: 9px auto 0; | |
| background: linear-gradient(90deg, transparent, rgba(255,255,255,0.22), transparent); | |
| } | |
| .item p { | |
| margin: 0 auto; | |
| min-width: 0; | |
| max-width: 98%; | |
| color: var(--text-dim); | |
| font-size: clamp(0.76rem, 0.92vw, 0.84rem); | |
| line-height: 1.48; | |
| letter-spacing: 0.001em; | |
| white-space: normal; | |
| overflow-wrap: break-word; | |
| text-align: center; | |
| } | |
| .footer { | |
| position: relative; | |
| z-index: 2; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| width: min(700px, 74%); | |
| margin: 38px auto 4px; | |
| } | |
| .footer > span { | |
| flex: 1; | |
| height: 1px; | |
| background: linear-gradient(90deg, transparent, rgba(255,255,255,0.28), rgba(255,255,255,0.08)); | |
| } | |
| .footer > span:last-child { | |
| transform: scaleX(-1); | |
| } | |
| .footer-mark { | |
| position: relative; | |
| width: 48px; | |
| height: 42px; | |
| margin: 0 16px; | |
| } | |
| .footer-mark i { | |
| position: absolute; | |
| left: 50%; | |
| height: 6px; | |
| border: 1px solid rgba(238, 242, 246, 0.26); | |
| border-radius: 50%; | |
| transform: translateX(-50%) rotate(-6deg); | |
| } | |
| .footer-mark i:nth-child(1) { top: 0; width: 46px; } | |
| .footer-mark i:nth-child(2) { top: 10px; width: 34px; transform: translateX(-50%) rotate(7deg); } | |
| .footer-mark i:nth-child(3) { top: 20px; width: 22px; } | |
| .footer-mark i:nth-child(4) { top: 30px; width: 10px; transform: translateX(-50%) rotate(8deg); } | |
| @keyframes drift-spin { | |
| from { transform: rotate(0deg) scale(1); } | |
| 50% { transform: rotate(180deg) scale(1.08); } | |
| to { transform: rotate(360deg) scale(1); } | |
| } | |
| @media (prefers-reduced-motion: reduce) { | |
| .ambient-haze { | |
| animation: none; | |
| } | |
| .card, | |
| .side-ornament span, | |
| .header h1, | |
| .media img, | |
| .media::after, | |
| .panel, | |
| .fold, | |
| .fold-icon, | |
| .item, | |
| .item::after { | |
| transition: none; | |
| } | |
| } | |
| @media (max-width: 760px) { | |
| .card { | |
| margin: 24px auto; | |
| padding: 34px 25px 42px; | |
| } | |
| .header { | |
| padding-bottom: 34px; | |
| } | |
| .header h1 { | |
| font-size: clamp(1.62rem, 6.6cqi, 3.15rem); | |
| } | |
| .panel { | |
| padding: 29px 24px; | |
| } | |
| .grid { | |
| gap: 10px; | |
| } | |
| .item { | |
| min-height: 160px; | |
| } | |
| } | |
| @media (max-width: 620px) { | |
| .card { | |
| padding: 29px 16px 37px; | |
| } | |
| .side-ornament { | |
| display: none; | |
| } | |
| .ambient-haze { | |
| width: 260px; | |
| height: 260px; | |
| } | |
| .header h1 { | |
| font-size: clamp(1.26rem, 7.2cqi, 2.18rem); | |
| letter-spacing: -0.022em; | |
| } | |
| .title-rule { | |
| width: 92%; | |
| margin-top: 22px; | |
| } | |
| .media { | |
| padding: 8px; | |
| margin-bottom: 27px; | |
| } | |
| .panel { | |
| padding: 26px 17px; | |
| margin-bottom: 27px; | |
| } | |
| .heading { | |
| gap: 10px; | |
| margin-bottom: 24px; | |
| } | |
| .heading h2 { | |
| font-size: 1.46rem; | |
| } | |
| .heading span { | |
| max-width: 90px; | |
| } | |
| .lead { | |
| font-size: 0.90rem; | |
| line-height: 1.74; | |
| } | |
| .grid { | |
| grid-template-columns: repeat(2, minmax(0, 1fr)); | |
| grid-template-rows: repeat(2, minmax(148px, 1fr)); | |
| gap: 8px; | |
| padding: 6px; | |
| } | |
| .item { | |
| min-height: 148px; | |
| } | |
| .item-copy { | |
| padding: 18px 10px; | |
| } | |
| .item h3 { | |
| font-size: clamp(0.72rem, 2.4vw, 0.86rem); | |
| letter-spacing: -0.002em; | |
| } | |
| .item p { | |
| max-width: 100%; | |
| font-size: clamp(0.68rem, 1.95vw, 0.78rem); | |
| line-height: 1.42; | |
| } | |
| .fold summary { | |
| min-height: 60px; | |
| padding-left: 16px; | |
| } | |
| .fold-name { | |
| font-size: 0.96rem; | |
| } | |
| .fold pre { | |
| padding: 20px 16px; | |
| font-size: 0.71rem; | |
| } | |
| } | |
| @media (max-width: 470px) { | |
| .grid { | |
| grid-template-columns: 1fr; | |
| grid-template-rows: none; | |
| gap: 9px; | |
| } | |
| .item { | |
| min-height: 128px; | |
| } | |
| .item h3 { | |
| font-size: 0.92rem; | |
| } | |
| .item p { | |
| font-size: 0.80rem; | |
| line-height: 1.46; | |
| } | |
| .header h1 { | |
| font-size: clamp(1.08rem, 7cqi, 1.72rem); | |
| } | |
| .heading h2 { | |
| font-size: 1.28rem; | |
| } | |
| } | |
| </style> |