* { box-sizing: border-box; } html { scroll-behavior: smooth; } body { font-family: system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial; margin:0; color:#2b0f0f; background:#fff5f5; line-height:1.6; } .container { max-width:980px; margin:0 auto; padding:24px; } .site-header { background:linear-gradient(90deg,#7f1d1d,#4b1111); color:#fff; padding:20px 0; border-bottom:3px solid #dc2626; } .site-header .container { padding:20px 24px; } .site-header h1 { margin:0; font-size:2.2rem; font-weight:700; letter-spacing:-0.5px; } .tag { margin-top:6px; opacity:0.9; font-size:0.95rem; } .grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:16px; margin-top:16px; } .card { background:#fff; padding:20px; border-radius:8px; box-shadow:0 1px 3px rgba(2,6,23,0.06); transition:all 0.3s ease; border:1px solid #e5e7eb; } .card:hover { transform:translateY(-2px); box-shadow:0 8px 16px rgba(2,6,23,0.1); } .site-footer { text-align:center; padding:24px; margin-top:40px; font-size:0.9rem; color:#6b7280; border-top:1px solid #e5e7eb; background:#fafafa; } h2 { margin:32px 0 16px 0; font-size:1.8rem; font-weight:700; color:#7f1d1d; padding-bottom:12px; border-bottom:2px solid #fee2e2; } h3 { margin:0 0 8px 0; font-size:1.1rem; font-weight:600; color:#7f1d1d; } section { margin-bottom:16px; } .lab-photo { display:block; width:100%; max-width:420px; margin-top:16px; border-radius:10px; border:1px solid #e5e7eb; box-shadow:0 8px 24px rgba(139,18,18,0.12); } p { margin:0 0 12px 0; } ol, ul { margin:12px 0; padding-left:24px; } li { margin-bottom:8px; } a { color:#dc2626; text-decoration:none; transition:color 0.2s ease; } a:hover { color:#991b1b; text-decoration:underline; } #links ul { list-style:none; padding:0; display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:12px; margin:16px 0; } #links li { margin:0; } #links a { display:block; padding:12px 16px; background:#fff; border:1px solid #e5e7eb; border-radius:6px; transition:all 0.3s ease; } #links a:hover { border-color:#dc2626; box-shadow:0 4px 12px rgba(220,38,38,0.15); } .blog-feed { display:grid; gap:24px; margin-top:16px; } .blog-post { background:#fff; border:1px solid #e5e7eb; border-radius:12px; padding:24px; box-shadow:0 1px 6px rgba(139,18,18,0.08); } .blog-post + .blog-post { border-top:4px solid #dc2626; margin-top:32px; padding-top:32px; } .blog-title { margin:0 0 8px 0; font-size:1.5rem; } .blog-meta { margin:0 0 16px 0; color:#7f1d1d; font-size:0.95rem; } .blog-body p { margin:0 0 1em 0; } .blog-body p:last-child { margin-bottom:0; } .blog-attachment-list { margin:16px 0 0 0; padding:0; list-style:none; } .blog-attachment-list li { margin:0.5em 0; } .blog-attachment-list a { color:#dc2626; text-decoration:none; } .blog-attachment-list a:hover { text-decoration:underline; } @media (max-width:520px){ h2 { font-size:1.4rem; } .site-header h1 { font-size:1.6rem; } .container { padding:16px; } } .header-links { margin-top:12px; } .header-links a { color:#fff; background:rgba(255,255,255,0.12); padding:0 14px; border-radius:6px; text-decoration:none; transition:all 0.2s ease; display:inline-flex; align-items:center; justify-content:center; height:36px; font-size:0.95rem; font-weight:500; line-height:1; } .header-links a:hover { background:rgba(255,255,255,0.25); } .header-links a + a { margin-left:10px; } .gallery { display:grid; grid-template-columns:repeat(auto-fill,minmax(350px,1fr)); gap:8px; margin-top:8px; } .gallery img { width:100%; height:250px; object-fit:cover; border-radius:8px; cursor:pointer; display:block; transition:all 0.3s ease; border:2px solid transparent; } .gallery img:hover { transform:scale(1.04); box-shadow:0 4px 12px rgba(139,18,18,0.15); border-color:#dc2626; } .modal { position:fixed; inset:0; background:rgba(2,6,23,0.95); display:flex; align-items:center; justify-content:center; z-index:60; backdrop-filter:blur(2px); } .modal.hidden { display:none; } .modal img { max-width:95%; max-height:90%; border-radius:8px; box-shadow:0 16px 48px rgba(2,6,23,0.4); animation:fadeInScale 0.3s ease; } @keyframes fadeInScale { from { opacity:0; transform:scale(0.95); } to { opacity:1; transform:scale(1); } } .modal-close, .modal-prev, .modal-next { position:fixed; background:rgba(255,255,255,0.1); color:#fff; border:0; font-size:36px; cursor:pointer; transition:all 0.2s ease; width:48px; height:48px; display:flex; align-items:center; justify-content:center; border-radius:6px; } .modal-close:hover, .modal-prev:hover, .modal-next:hover { background:rgba(255,255,255,0.2); } .modal-close { right:20px; top:20px; } .modal-prev { left:20px; top:50%; transform:translateY(-50%); } .modal-next { right:20px; top:50%; transform:translateY(-50%); }