anycoder-6065709a / index.html
dmeck's picture
Upload folder using huggingface_hub
2868c24 verified
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>WARDROBE AS SELF-REGULATOR | 穿搭自我调节装置</title>
<!-- Import Icons Library -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<style>
/*
* GLOBAL VARIABLES & RESET
* Soft Functionalism Aesthetic
*/
:root {
--bg-body: #F9F9F9;
--text-main: #333333;
--text-sub: #666666;
/* Athflow Palette */
--athflow-bg: #E0E4E8;
--athflow-accent: #8C9BA5;
--athflow-highlight: #C4A484;
/* Minimalist Palette */
--minimal-bg: #F5F5F5;
--minimal-accent: #333333;
--minimal-highlight: #666666;
/* Y2K Palette */
--y2k-bg: #FFFFFF;
--y2k-accent: #FF69B4;
--y2k-highlight: #00FF00; /* Neon Green */
--y2k-shadow: #ff69b440;
/* UI Elements */
--border-radius-card: 16px;
--border-radius-btn: 50px;
--transition-speed: 0.4s cubic-bezier(0.25, 0.8, 0.25, 1);
--shadow-soft: 0 10px 30px rgba(0,0,0,0.05);
--shadow-hover: 0 15px 40px rgba(0,0,0,0.1);
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
}
body {
background-color: var(--bg-body);
color: var(--text-main);
line-height: 1.6;
overflow-x: hidden;
}
a { text-decoration: none; color: inherit; }
ul { list-style: none; }
/*
* HEADER SECTION (A1)
* Gradient: Light Gray -> Beige
*/
header {
background: linear-gradient(135deg, #E0E4E8 0%, #F5F5F0 100%);
padding: 4rem 2rem;
text-align: center;
position: relative;
overflow: hidden;
}
/* Header Texture Overlay */
header::before {
content: '';
position: absolute;
top: 0; left: 0; width: 100%; height: 100%;
background-image: url("data:image/svg+xml,%3Csvg width='20' height='20' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='%239C92AC' fill-opacity='0.05' fill-rule='evenodd'%3E%3Ccircle cx='3' cy='3' r='3'/%3E%3Ccircle cx='13' cy='13' r='3'/%3E%3C/g%3E%3C/svg%3E");
opacity: 0.5;
}
.header-content {
position: relative;
z-index: 2;
max-width: 800px;
margin: 0 auto;
}
.brand-link {
display: inline-block;
margin-bottom: 1rem;
font-size: 0.8rem;
font-weight: 600;
color: #4CAF50; /* Mint Green */
background: rgba(255,255,255,0.6);
padding: 4px 12px;
border-radius: 20px;
backdrop-filter: blur(5px);
transition: transform 0.2s;
}
.brand-link:hover { transform: scale(1.05); }
h1 {
font-size: 2.5rem;
font-weight: 700;
letter-spacing: -1px;
margin-bottom: 1rem;
color: #222;
}
.subtitle {
font-size: 1.1rem;
color: var(--text-sub);
font-weight: 300;
}
/*
* CORE MODES SECTION (B1-B3)
* Horizontal 3-column layout
*/
.container {
max-width: 1200px;
margin: 0 auto;
padding: 2rem;
}
.modes-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 2rem;
margin-top: -3rem; /* Overlap header slightly */
position: relative;
z-index: 3;
}
.mode-card {
background: #fff;
border-radius: var(--border-radius-card);
padding: 2rem;
box-shadow: var(--shadow-soft);
transition: var(--transition-speed);
cursor: pointer;
position: relative;
overflow: hidden;
display: flex;
flex-direction: column;
align-items: center;
border: 1px solid rgba(0,0,0,0.02);
}
.mode-card:hover {
transform: translateY(-10px);
box-shadow: var(--shadow-hover);
}
/* Card Visuals (CSS Illustrations) */
.card-visual {
width: 120px;
height: 120px;
margin-bottom: 1.5rem;
position: relative;
transition: var(--transition-speed);
}
.visual-shape {
width: 100%;
height: 100%;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 3rem;
color: #fff;
}
/* Specific Styles per Mode */
/* B1: Athflow */
.mode-card.athflow { border-top: 4px solid var(--athflow-accent); }
.mode-card.athflow .visual-shape { background: linear-gradient(135deg, var(--athflow-accent), var(--athflow-bg)); }
.mode-card.athflow h3 { color: var(--athflow-accent); }
.mode-card.athflow .tag { background: var(--athflow-bg); color: var(--athflow-accent); }
/* B2: Minimalist */
.mode-card.minimal { border-top: 4px solid var(--minimal-accent); }
.mode-card.minimal .visual-shape { background: linear-gradient(135deg, #333, #666); }
.mode-card.minimal h3 { color: var(--minimal-accent); }
.mode-card.minimal .tag { background: var(--minimal-bg); color: var(--minimal-accent); }
/* B3: Y2K */
.mode-card.y2k { border-top: 4px solid var(--y2k-accent); }
.mode-card.y2k .visual-shape {
background: #fff;
color: var(--y2k-accent);
box-shadow: 0 0 15px var(--y2k-accent);
}
.mode-card.y2k h3 { color: var(--y2k-accent); }
.mode-card.y2k .tag { background: var(--y2k-accent); color: #fff; box-shadow: 0 4px 10px var(--y2k-shadow); }
/* Card Content */
.mode-card h3 {
font-size: 1.5rem;
margin-bottom: 0.5rem;
}
.tag {
font-size: 0.8rem;
padding: 4px 12px;
border-radius: 20px;
margin-bottom: 1rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 1px;
}
.card-desc {
text-align: center;
font-size: 0.9rem;
color: var(--text-sub);
margin-bottom: 1rem;
}
.interaction-hint {
font-size: 0.75rem;
color: #aaa;
margin-top: auto;
display: flex;
align-items: center;
gap: 5px;
opacity: 0;
transform: translateY(10px);
transition: var(--transition-speed);
}
.mode-card:hover .interaction-hint {
opacity: 1;
transform: translateY(0);
}
/*
* MECHANISM SECTION (C1-C3)
* Accordion / Collapsible Panels
*/
.mechanism-panel {
max-height: 0;
overflow: hidden;
transition: max-height 0.5s ease-in-out, opacity 0.3s ease;
opacity: 0;
background: #fff;
margin-top: 1rem;
border-radius: 8px;
box-shadow: 0 4px 15px rgba(0,0,0,0.03);
}
.mechanism-panel.active {
max-height: 500px; /* Arbitrary large height */
opacity: 1;
padding: 1.5rem;
border-top: 1px solid #eee;
}
.mechanism-content {
display: flex;
flex-direction: column;
gap: 1rem;
}
.mech-item {
display: flex;
gap: 1rem;
align-items: flex-start;
}
.mech-icon {
min-width: 30px;
height: 30px;
background: #f0f0f0;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 0.8rem;
color: #555;
}
.mech-text h4 {
font-size: 0.9rem;
margin-bottom: 0.2rem;
}
.mech-text p {
font-size: 0.8rem;
color: #666;
}
/*
* CONCLUSION SECTION (D1)
* Control Knobs
*/
.conclusion-section {
margin-top: 4rem;
padding: 3rem 2rem;
background: #fff;
border-radius: 20px;
text-align: center;
box-shadow: var(--shadow-soft);
}
.knob-container {
display: flex;
justify-content: center;
gap: 3rem;
margin-top: 2rem;
flex-wrap: wrap;
}
.knob-wrapper {
display: flex;
flex-direction: column;
align-items: center;
gap: 1rem;
cursor: pointer;
transition: transform 0.2s;
}
.knob-wrapper:hover {
transform: scale(1.05);
}
.knob {
width: 80px;
height: 80px;
border-radius: 50%;
background: #eee;
position: relative;
display: flex;
align-items: center;
justify-content: center;
font-size: 1.5rem;
color: #ccc;
transition: all 0.3s ease;
box-shadow: inset 0 2px 5px rgba(0,0,0,0.1);
}
.knob::after {
content: '';
position: absolute;
top: 5px;
left: 50%;
width: 4px;
height: 30%;
background: currentColor;
transform: translateX(-50%);
border-radius: 2px;
}
.knob-label {
font-size: 0.9rem;
font-weight: 600;
color: #999;
}
/* Active States for Knobs */
.knob-wrapper[data-mode="athflow"].active .knob {
background: var(--athflow-accent);
color: #fff;
box-shadow: 0 0 20px var(--athflow-accent);
}
.knob-wrapper[data-mode="athflow"].active .knob-label { color: var(--athflow-accent); }
.knob-wrapper[data-mode="minimal"].active .knob {
background: var(--minimal-accent);
color: #fff;
box-shadow: 0 0 20px var(--minimal-accent);
}
.knob-wrapper[data-mode="minimal"].active .knob-label { color: var(--minimal-accent); }
.knob-wrapper[data-mode="y2k"].active .knob {
background: var(--y2k-accent);
color: #fff;
box-shadow: 0 0 20px var(--y2k-accent);
}
.knob-wrapper[data-mode="y2k"].active .knob-label { color: var(--y2k-accent); }
/* Synergy Highlight Effect on Cards */
.mode-card.dimmed {
opacity: 0.3;
filter: grayscale(100%);
pointer-events: none;
}
.mode-card.highlighted {
transform: scale(1.05);
border: 2px solid;
z-index: 10;
}
.mode-card.athflow.highlighted { border-color: var(--athflow-accent); }
.mode-card.minimal.highlighted { border-color: var(--minimal-accent); }
.mode-card.y2k.highlighted { border-color: var(--y2k-accent); }
/* Responsive Design */
@media (max-width: 900px) {
.modes-grid {
grid-template-columns: 1fr;
margin-top: 2rem;
}
h1 { font-size: 2rem; }
.knob-container { gap: 2rem; }
}
</style>
</head>
<body>
<!-- A1: Header Section -->
<header>
<div class="header-content">
<a href="https://huggingface.co/spaces/akhaliq/anycoder" target="_blank" class="brand-link">
<i class="fas fa-code"></i> Built with anycoder
</a>
<h1>WARDROBE AS SELF-REGULATOR</h1>
<p class="subtitle">穿搭是自我调节装置 · 情绪×职业×城市的三重平衡术</p>
</div>
</header>
<main class="container">
<!-- B & C: Core Modes & Mechanisms -->
<section class="modes-grid">
<!-- B1/C1: Athflow -->
<article class="mode-card athflow" id="card-athflow" onclick="togglePanel('athflow')">
<div class="card-visual">
<div class="visual-shape">
<i class="fas fa-tshirt"></i>
</div>
</div>
<h3>Athflow</h3>
<div class="tag">舒适护盾</div>
<p class="card-desc">宽松西装 + 针织衫 + 阔腿裤</p>
<div class="interaction-hint">
<i class="fas fa-mouse-pointer"></i> 点击查看详情
</div>
<!-- C1 Mechanism Panel -->
<div class="mechanism-panel" id="panel-athflow">
<div class="mechanism-content">
<div class="mech-item">
<div class="mech-icon"><i class="fas fa-brain"></i></div>
<div class="mech-text">
<h4>情绪修复机制</h4>
<p>柔和色彩(灰/靛蓝)→ 降低皮质醇分泌,营造“情绪缓冲带”。</p>
</div>
</div>
<div class="mech-item">
<div class="mech-icon"><i class="fas fa-briefcase"></i></div>
<div class="mech-text">
<h4>职业场景适配</h4>
<p>低刺激材质避免过度兴奋,适应“自闭症儿童互动”等高压场景。</p>
</div>
</div>
<div class="mech-item">
<div class="mech-icon"><i class="fas fa-city"></i></div>
<div class="mech-text">
<h4>城市趋势佐证</h4>
<p>上海 2021 街拍数据 → Athflow 占比 42%,城市接纳度高。</p>
</div>
</div>
</div>
</div>
</article>
<!-- B2/C2: Minimalist -->
<article class="mode-card minimal" id="card-minimal" onclick="togglePanel('minimal')">
<div class="card-visual">
<div class="visual-shape">
<i class="fas fa-layer-group"></i>
</div>
</div>
<h3>极简中性</h3>
<div class="tag">边界重建</div>
<p class="card-desc">Oversized 衬衫 + 直筒裤</p>
<div class="interaction-hint">
<i class="fas fa-mouse-pointer"></i> 点击查看详情
</div>
<!-- C2 Mechanism Panel -->
<div class="mechanism-panel" id="panel-minimal">
<div class="mechanism-content">
<div class="mech-item">
<div class="mech-icon"><i class="fas fa-shield-alt"></i></div>
<div class="mech-text">
<h4>边界加固逻辑</h4>
<p>去性化剪裁 → 建立物理与心理的安全距离,减少社交凝视。</p>
</div>
</div>
<div class="mech-item">
<div class="mech-icon"><i class="fas fa-ruler-combined"></i></div>
<div class="mech-text">
<h4>结构美学</h4>
<p>挺括线条传递“结构稳定感”,强化职业权威与理性。</p>
</div>
</div>
<div class="mech-item">
<div class="mech-icon"><i class="fas fa-palette"></i></div>
<div class="mech-text">
<h4>艺术表达</h4>
<p>黑白灰的极致运用,将个人情绪隐藏于色彩之后。</p>
</div>
</div>
</div>
</div>
</article>
<!-- B3/C3: Y2K -->
<article class="mode-card y2k" id="card-y2k" onclick="togglePanel('y2k')">
<div class="card-visual">
<div class="visual-shape">
<i class="fas fa-bolt"></i>
</div>
</div>
<h3>Y2K 复古</h3>
<div class="tag">自我重启</div>
<p class="card-desc">露脐上衣 + 迷你裙</p>
<div class="interaction-hint">
<i class="fas fa-mouse-pointer"></i> 点击查看详情
</div>
<!-- C3 Mechanism Panel -->
<div class="mechanism-panel" id="panel-y2k">
<div class="mechanism-content">
<div class="mech-item">
<div class="mech-icon"><i class="fas fa-fire"></i></div>
<div class="mech-text">
<h4>反羞耻机制</h4>
<p>高饱和色与露肤度 → 对抗社会规训,释放被压抑的生命力。</p>
</div>
</div>
<div class="mech-item">
<div class="mech-icon"><i class="fas fa-clock"></i></div>
<div class="mech-text">
<h4>分时着装管理</h4>
<p>明确区分“工作模式”与“自我时间”,通过视觉冲击切换状态。</p>
</div>
</div>
<div class="mech-item">
<div class="mech-icon"><i class="fas fa-camera-retro"></i></div>
<div class="mech-text">
<h4>视觉冲击感</h4>
<p>金属反光与荧光色,在数字时代重申身体的存在感。</p>
</div>
</div>
</div>
</div>
</article>
</section>
<!-- D1: Conclusion / Control Knobs -->
<section class="conclusion-section">
<h2>协同调节系统</h2>
<p style="color: #666; margin-top: 0.5rem;">点击旋钮激活对应模式,观察穿搭系统的动态平衡</p>
<div class="knob-container">
<!-- Knob 1 -->
<div class="knob-wrapper" data-mode="athflow" onclick="activateMode('athflow')">
<div class="knob">
<i class="fas fa-shield-alt"></i>
</div>
<div class="knob-label">舒适护盾</div>
</div>
<!-- Knob 2 -->
<div class="knob-wrapper" data-mode="minimal" onclick="activateMode('minimal')">
<div class="knob">
<i class="fas fa-vector-square"></i>
</div>
<div class="knob-label">边界重建</div>
</div>
<!-- Knob 3 -->
<div class="knob-wrapper" data-mode="y2k" onclick="activateMode('y2k')">
<div class="knob">
<i class="fas fa-bolt"></i>
</div>
<div class="knob-label">自我重启</div>
</div>
</div>
</section>
</main>
<script>
// State Management
const state = {
activeMode: null
};
/**
* Toggle Mechanism Panel (C1-C3)
* Triggered by clicking the card
*/
function togglePanel(mode) {
const panel = document.getElementById(`panel-${mode}`);
const isActive = panel.classList.contains('active');
// Close all other panels first for cleaner UI
document.querySelectorAll('.mechanism-panel').forEach(p => {
p.classList.remove('active');
});
if (!isActive) {
panel.classList.add('active');
}
}
/**
* Activate Mode via Knobs (D1)
* Handles the synergy logic: Highlight active, dim others, open panel
*/
function activateMode(mode) {
// If clicking the already active mode, toggle it off
if (state.activeMode === mode) {
resetAll();
return;
}
state.activeMode = mode;
// 1. Reset Knob UI
document.querySelectorAll('.knob-wrapper').forEach(wrapper => {
wrapper.classList.remove('active');
});
document.querySelector(`.knob-wrapper[data-mode="${mode}"]`).classList.add('active');
// 2. Card Highlighting Logic
const cards = document.querySelectorAll('.mode-card');
cards.forEach(card => {
card.classList.remove('highlighted', 'dimmed');
});
const activeCard = document.getElementById(`card-${mode}`);
if (activeCard) {
activeCard.classList.add('highlighted');
// Scroll to card if on mobile
if (window.innerWidth < 900) {
activeCard.scrollIntoView({ behavior: 'smooth', block: 'center' });
}
// Auto open the mechanism panel for the active mode
togglePanel(mode);
}
}
function resetAll() {
state.activeMode = null;
document.querySelectorAll('.knob-wrapper').forEach(w => w.classList.remove('active'));
document.querySelectorAll('.mode-card').forEach(c => {
c.classList.remove('highlighted', 'dimmed');
});
document.querySelectorAll('.mechanism-panel').forEach(p => p.classList.remove('active'));
}
// Add hover logic for "Lighting up" effect described in PRD
const cards = document.querySelectorAll('.mode-card');
cards.forEach(card => {
card.addEventListener('mouseenter', () => {
// Visual feedback logic could go here (e.g., sound or complex animation)
// For now, CSS hover handles the visual change
});
});
</script>
</body>
</html>