:root { --ink: #20172b; --paper: #fff8fc; --pink: #ff6fb1; --hot-pink: #ff2f87; --purple: #8b5cf6; --lilac: #eadcff; --mint: #84f0de; --butter: #fff09a; --sky: #b9e9ff; --peach: #ffc7a8; --shadow: 7px 7px 0 var(--ink); } * { box-sizing: border-box; } html { scroll-behavior: smooth; } body { margin: 0; color: var(--ink); font-family: "Trebuchet MS", "Microsoft YaHei", sans-serif; background: radial-gradient(circle at 18px 18px, rgba(255, 111, 177, 0.28) 2px, transparent 3px), radial-gradient(circle at 44px 44px, rgba(132, 240, 222, 0.3) 2px, transparent 3px), linear-gradient(135deg, #fff8fc 0%, #fff8fc 52%, #f0e5ff 52%, #fff3c9 100%); background-size: 52px 52px, 52px 52px, auto; } a { color: inherit; text-decoration: none; } .topbar { position: sticky; top: 0; z-index: 10; display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 14px clamp(16px, 4vw, 56px); border-bottom: 4px solid var(--ink); background: rgba(255, 248, 252, 0.94); backdrop-filter: blur(12px); } .brand, .nav, .hero-actions { display: flex; align-items: center; gap: 12px; } .brand { font-weight: 900; } .brand-mark { display: grid; width: 38px; height: 38px; place-items: center; border: 3px solid var(--ink); border-radius: 50%; background: var(--pink); box-shadow: 4px 4px 0 var(--ink); color: white; } .nav { flex-wrap: wrap; justify-content: flex-end; font-size: 15px; font-weight: 800; } .nav a { border-bottom: 3px solid transparent; } .nav a:hover { border-color: var(--hot-pink); } .hero { display: block; min-height: auto; padding: clamp(28px, 5vw, 72px); } .hero-art { position: relative; min-height: 420px; border: 5px solid var(--ink); border-radius: 8px; overflow: hidden; background: radial-gradient(circle at 22% 22%, var(--butter) 0 34px, transparent 35px), radial-gradient(circle at 74% 32%, var(--mint) 0 18px, transparent 19px), radial-gradient(circle at 82% 76%, var(--pink) 0 28px, transparent 29px), linear-gradient(145deg, #c6f4ff 0%, #f7dcff 54%, #ffd4ea 100%); box-shadow: var(--shadow); } .moon { position: absolute; right: 34px; top: 28px; width: 84px; height: 84px; border: 4px solid var(--ink); border-radius: 50%; background: var(--butter); box-shadow: 5px 5px 0 var(--ink); } .moon::after { position: absolute; right: -2px; top: -4px; width: 70px; height: 80px; border-radius: 50%; background: #f7dcff; content: ""; } .star { position: absolute; width: 20px; height: 20px; background: var(--hot-pink); clip-path: polygon(50% 0, 62% 34%, 98% 35%, 69% 56%, 79% 92%, 50% 70%, 21% 92%, 31% 56%, 2% 35%, 38% 34%); } .star-one { left: 48px; top: 56px; } .star-two { right: 126px; bottom: 118px; background: var(--purple); } .star-three { left: 88px; bottom: 78px; background: var(--mint); } .comic-girl { position: absolute; left: 50%; bottom: 32px; width: 236px; height: 322px; transform: translateX(-50%); } .hood, .face, .shirt, .collar, .pop, .profile-card, .edit-card, .upload-card, .photo-card, .video-box, .diary-form, .diary-entry { border: 4px solid var(--ink); } .hood { position: absolute; left: 24px; top: 22px; width: 188px; height: 180px; border-radius: 50% 50% 38% 38%; background: #2c1c3c; box-shadow: inset 0 -18px 0 var(--purple); } .ear { position: absolute; top: -35px; width: 58px; height: 94px; border: 4px solid var(--ink); background: #2c1c3c; } .ear.left { left: 12px; border-radius: 90% 16% 70% 20%; transform: rotate(-18deg); } .ear.right { right: 12px; border-radius: 16% 90% 20% 70%; transform: rotate(18deg); } .ear::after { position: absolute; inset: 18px 13px 12px; border-radius: inherit; background: var(--pink); content: ""; } .skull { position: absolute; left: 50%; top: 24px; display: grid; width: 46px; height: 40px; place-items: center; border: 4px solid var(--ink); border-radius: 50% 50% 42% 42%; background: white; font-size: 20px; font-weight: 900; transform: translateX(-50%); } .face { position: absolute; left: 47px; top: 76px; width: 142px; height: 126px; border-radius: 46% 46% 42% 42%; background: #ffd7c4; } .eye { position: absolute; top: 52px; width: 16px; height: 24px; border-radius: 50%; background: var(--ink); } .eye.left { left: 36px; } .eye.right { right: 36px; } .cheek { position: absolute; top: 80px; width: 18px; height: 8px; border-radius: 999px; background: var(--pink); } .cheek.left { left: 22px; } .cheek.right { right: 22px; } .smile { position: absolute; left: 55px; bottom: 28px; width: 32px; height: 16px; border-bottom: 4px solid var(--ink); border-radius: 0 0 40px 40px; } .collar { position: absolute; left: 70px; bottom: 94px; z-index: 2; width: 96px; height: 32px; border-radius: 999px; background: var(--pink); } .shirt { position: absolute; left: 44px; bottom: 0; width: 148px; height: 126px; border-radius: 34px 34px 10px 10px; background: linear-gradient(90deg, transparent 0 43%, var(--mint) 43% 57%, transparent 57%), var(--purple); } .pop { position: absolute; z-index: 2; padding: 10px 16px; border-radius: 999px; background: white; color: var(--ink); font-weight: 900; box-shadow: 5px 5px 0 var(--ink); } .pop-one { left: 24px; top: 28px; background: var(--mint); } .pop-two { right: 24px; bottom: 34px; background: var(--pink); color: white; } .hero-copy { max-width: 620px; } .eyebrow { margin: 0 0 10px; color: var(--hot-pink); font-size: 14px; font-weight: 900; letter-spacing: 0; text-transform: uppercase; } h1, h2, h3, p, figure { margin-top: 0; } h1 { margin-bottom: 18px; font-size: clamp(42px, 8vw, 88px); line-height: 0.98; } h2 { margin-bottom: 0; font-size: clamp(30px, 5vw, 52px); } h3 { margin-bottom: 10px; font-size: 24px; } p { font-size: 18px; line-height: 1.7; } .button, .delete-button { display: inline-flex; min-height: 46px; align-items: center; justify-content: center; padding: 11px 18px; border: 4px solid var(--ink); border-radius: 8px; box-shadow: 5px 5px 0 var(--ink); font: inherit; font-weight: 900; cursor: pointer; transition: transform 160ms ease, box-shadow 160ms ease; } .button:hover, .delete-button:hover, .play-button:hover { transform: translate(3px, 3px); box-shadow: 2px 2px 0 var(--ink); } .primary { background: var(--pink); color: white; } .secondary { background: white; } .delete-button { min-height: 36px; padding: 6px 12px; background: var(--butter); font-size: 14px; } .band { padding: clamp(44px, 7vw, 86px) clamp(16px, 5vw, 72px); border-top: 5px solid var(--ink); } .section-title, .about-layout, .info-grid, .upload-card, .gallery-grid, .video-box, .diary-layout { max-width: 1040px; margin-right: auto; margin-left: auto; } .section-title { margin-bottom: 28px; } .about-band { background: linear-gradient(90deg, rgba(255, 240, 154, 0.7) 0 20%, transparent 20% 100%) 0 0 / 38px 38px, #fff8fc; } .about-layout, .diary-layout { display: grid; grid-template-columns: minmax(260px, 0.95fr) minmax(280px, 1.05fr); gap: 26px; } .profile-card, .edit-card, .upload-card, .photo-card, .diary-form, .diary-entry { border-radius: 8px; background: white; box-shadow: var(--shadow); } .profile-card { display: grid; grid-template-columns: 150px 1fr; gap: 22px; align-items: center; padding: 22px; } .avatar-preview { display: grid; width: 150px; height: 150px; place-items: center; overflow: hidden; border: 4px solid var(--ink); border-radius: 50%; background: radial-gradient(circle at 50% 44%, #ffd7c4 0 36%, transparent 37%), linear-gradient(145deg, #2c1c3c 0 52%, var(--pink) 52% 100%); box-shadow: 5px 5px 0 var(--ink); color: white; font-size: 54px; font-weight: 900; } .avatar-preview img { width: 100%; height: 100%; object-fit: cover; } .edit-card, .diary-form { padding: 20px; } .info-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; margin-top: 26px; } .info-grid div { min-height: 116px; padding: 18px; border: 4px solid var(--ink); border-radius: 8px; background: var(--lilac); box-shadow: 5px 5px 0 var(--ink); } .info-grid div:nth-child(2) { background: #ffd1e8; } .info-grid div:nth-child(3) { background: #d9f9ff; } .info-grid div:nth-child(4) { background: var(--mint); } .info-grid span, label { display: block; margin-bottom: 8px; font-size: 14px; font-weight: 900; } .info-grid strong { font-size: 20px; line-height: 1.35; } input, select, textarea { width: 100%; margin-bottom: 16px; padding: 12px; border: 3px solid var(--ink); border-radius: 6px; color: var(--ink); font: inherit; background: #fffafd; } input[type="file"] { padding: 10px; background: white; } textarea { min-height: 126px; resize: vertical; } .file-picker { margin-bottom: 16px; } .gallery-band { background: radial-gradient(circle at 12% 20%, rgba(132, 240, 222, 0.55) 0 58px, transparent 59px), radial-gradient(circle at 88% 16%, rgba(255, 111, 177, 0.38) 0 64px, transparent 65px), #f9f1ff; color: var(--ink); } .upload-card { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 14px; margin-bottom: 24px; padding: 18px; } .upload-card .file-picker { flex: 1; margin-bottom: 0; } .upload-card input { margin-bottom: 0; } .folder-form { display: flex; align-items: flex-end; gap: 14px; } .folder-form label { flex: 1; } .folder-tabs { display: flex; max-width: 1040px; margin: 0 auto 22px; gap: 12px; overflow-x: auto; padding: 4px 4px 10px; } .folder-tab { display: inline-flex; min-height: 42px; flex: 0 0 auto; align-items: center; gap: 10px; padding: 8px 14px; border: 4px solid var(--ink); border-radius: 8px; background: white; box-shadow: 4px 4px 0 var(--ink); color: var(--ink); font: inherit; font-weight: 900; cursor: pointer; } .folder-tab.active { background: var(--mint); } .folder-action { padding: 3px 7px; border: 2px solid var(--ink); border-radius: 999px; background: var(--butter); font-size: 12px; } .folder-delete { background: #ffd1e8; } .upload-status { width: 100%; margin: 0; color: #6a5176; font-size: 14px; font-weight: 900; } .gallery-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; margin-bottom: 22px; } .photo-card { position: relative; min-height: 250px; margin: 0; padding: 14px; } .uploaded-photo { min-height: auto; } .photo-illustration, .uploaded-photo img { width: 100%; height: 170px; border: 4px solid var(--ink); border-radius: 6px; object-fit: cover; overflow: hidden; } .photo-preview-button { display: block; width: 100%; padding: 0; border: 0; background: transparent; cursor: zoom-in; } .night { background: radial-gradient(circle at 26% 28%, var(--butter) 0 26px, transparent 27px), radial-gradient(circle at 72% 36%, var(--pink) 0 11px, transparent 12px), linear-gradient(145deg, #b9e9ff, #eadcff); } .doodle { background: radial-gradient(circle at 24% 34%, var(--mint) 0 12px, transparent 13px), radial-gradient(circle at 72% 25%, white 0 10px, transparent 11px), radial-gradient(circle at 62% 72%, var(--purple) 0 15px, transparent 16px), #ffabd0; } .stage { background: linear-gradient(90deg, transparent 0 34%, rgba(32, 23, 43, 0.18) 34% 36%, transparent 36% 64%, rgba(32, 23, 43, 0.18) 64% 66%, transparent 66%), linear-gradient(#d9f9ff 0 55%, #ff8ec2 55% 100%); } .photo-card figcaption { padding-top: 13px; font-size: 18px; font-weight: 900; } .uploaded-photo .delete-button { margin-top: 10px; } .image-dialog { width: min(94vw, 980px); max-height: 92vh; padding: 18px; border: 4px solid var(--ink); border-radius: 8px; background: #fff8fc; box-shadow: var(--shadow); } .image-dialog::backdrop { background: rgba(32, 23, 43, 0.55); } .image-dialog img { display: block; max-width: 100%; max-height: 78vh; margin: 0 auto; border: 4px solid var(--ink); border-radius: 8px; object-fit: contain; } .dialog-close { display: grid; width: 40px; height: 40px; margin: 0 0 12px auto; place-items: center; border: 3px solid var(--ink); border-radius: 50%; background: var(--pink); box-shadow: 3px 3px 0 var(--ink); color: white; font-size: 24px; font-weight: 900; line-height: 1; cursor: pointer; } .video-box { display: flex; align-items: center; gap: 18px; padding: 20px; border-radius: 8px; background: var(--mint); box-shadow: var(--shadow); } .play-button { display: grid; width: 74px; height: 74px; flex: 0 0 auto; place-items: center; border: 4px solid var(--ink); border-radius: 50%; background: white; box-shadow: 5px 5px 0 var(--ink); color: var(--ink); font-size: 28px; cursor: pointer; } .diary-band { background: linear-gradient(135deg, rgba(255, 111, 177, 0.18) 25%, transparent 25%) 0 0 / 28px 28px, #fff8fc; } .diary-list { display: grid; gap: 14px; align-content: start; } .diary-entry { padding: 20px; box-shadow: 5px 5px 0 var(--ink); } .diary-entry time { display: block; margin-bottom: 8px; color: #695474; font-size: 13px; font-weight: 900; } .diary-entry .delete-button { margin-top: 4px; } .diary-image-button { display: block; width: 100%; margin: 10px 0 14px; padding: 0; border: 0; background: transparent; cursor: zoom-in; } .diary-image-button img { display: block; width: 100%; max-height: 360px; border: 4px solid var(--ink); border-radius: 8px; object-fit: cover; } .empty-diary { padding: 22px; border: 4px dashed var(--ink); border-radius: 8px; background: rgba(255, 255, 255, 0.78); font-weight: 900; } .empty-gallery { grid-column: 1 / -1; padding: 26px; border: 4px dashed var(--ink); border-radius: 8px; background: rgba(255, 255, 255, 0.78); box-shadow: 5px 5px 0 var(--ink); font-weight: 900; } .footer { display: flex; justify-content: space-between; gap: 16px; padding: 22px clamp(16px, 5vw, 72px); border-top: 5px solid var(--ink); background: var(--ink); color: white; font-weight: 800; } @media (max-width: 920px) { .info-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } } @media (max-width: 820px) { .topbar, .footer { align-items: flex-start; flex-direction: column; } .hero, .about-layout, .diary-layout, .gallery-grid { grid-template-columns: 1fr; } .hero { min-height: auto; } .hero-art { min-height: 360px; order: -1; } .profile-card { grid-template-columns: 1fr; } .upload-card { align-items: stretch; flex-direction: column; } .folder-form { align-items: stretch; flex-direction: column; } } @media (max-width: 520px) { .hero-actions, .video-box { align-items: stretch; flex-direction: column; } .button, .delete-button { width: 100%; } .info-grid { grid-template-columns: 1fr; } h1 { font-size: 42px; } } .page { display: none; } .page.active { display: block; } .hidden { display: none !important; } .nav a.active { border-color: var(--hot-pink); } .text-button { display: inline-flex; min-height: 34px; align-items: center; justify-content: center; padding: 5px 12px; border: 3px solid var(--ink); border-radius: 8px; background: white; box-shadow: 3px 3px 0 var(--ink); color: var(--ink); font: inherit; font-weight: 900; cursor: pointer; } .profile-main { display: grid; grid-template-columns: 150px 1fr; gap: 22px; align-items: center; } .hero .profile-card { display: block; max-width: 1040px; margin: 0 auto; padding: 28px; } .hero .profile-card h1 { font-size: clamp(36px, 6vw, 68px); } .owner-panel { max-width: 1040px; margin: 0 auto 28px; padding: 20px; border: 4px solid var(--ink); border-radius: 8px; background: white; box-shadow: var(--shadow); } .owner-panel.compact, .section-title.compact { margin-bottom: 14px; } .login-dialog { width: min(92vw, 420px); border: 4px solid var(--ink); border-radius: 8px; background: #fff8fc; box-shadow: var(--shadow); color: var(--ink); } .login-dialog::backdrop { background: rgba(32, 23, 43, 0.45); } .login-dialog form { display: grid; gap: 10px; } .dialog-actions { display: flex; justify-content: flex-end; gap: 12px; } .form-message, .upload-status { min-height: 20px; margin: 0; color: #6a5176; font-size: 14px; font-weight: 900; } .home-gallery { max-width: 1040px; margin: 0 auto; padding: 0 clamp(16px, 5vw, 72px) clamp(44px, 7vw, 72px); } .home-gallery-header { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; margin-bottom: 20px; } .home-gallery-header h2 { margin-bottom: 0; } .home-gallery-grid { margin-bottom: 0; } @media (max-width: 820px) { .profile-main { grid-template-columns: 1fr; } } @media (max-width: 920px) { .gallery-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } } @media (max-width: 640px) { .topbar { position: static; } .brand { width: 100%; } .nav { width: 100%; justify-content: flex-start; } .hero { padding: 22px 16px; } .home-gallery { padding: 0 16px 42px; } .home-gallery-header { align-items: stretch; flex-direction: column; } .home-gallery-header .button { width: 100%; } .gallery-grid { grid-template-columns: 1fr; gap: 16px; } .photo-card { padding: 12px; } .photo-illustration, .uploaded-photo img { height: 220px; } .image-dialog { width: 94vw; padding: 12px; } .image-dialog img { max-height: 72vh; } .dialog-actions { flex-direction: column; } .folder-tabs { margin-right: 16px; margin-left: 16px; } }