:root{--portal-bg: #0f1115;--portal-card: #1c2028;--portal-text: #e2e8f0;--portal-sub: #94a3b8;--portal-accent: #3b82f6;--portal-danger: #f87171;--portal-border: rgba(255, 255, 255, .08)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}body{background:radial-gradient(1000px 500px at 10% -20%,rgba(59,130,246,.2),transparent 60%),radial-gradient(800px 400px at 90% -20%,rgba(129,140,248,.2),transparent 55%),var(--portal-bg);color:var(--portal-text);font-family:Inter,Noto Sans JP,sans-serif;margin:0;padding:0;overflow-y:auto;min-height:100vh}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}#portal-header{position:sticky;top:0;z-index:1000;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 24px;background:#0f1115d9;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--portal-border)}.logo-group{display:flex;align-items:center;gap:12px;flex-shrink:0}.logo-area{display:flex;align-items:baseline;gap:8px;text-decoration:none;color:#fff}.lang-switcher{display:flex;align-items:center;gap:2px;background:#ffffff0f;border-radius:8px;padding:2px}.lang-btn{padding:3px 9px;border-radius:6px;border:none;background:transparent;color:#94a3b8;font-size:11px;font-weight:700;letter-spacing:.5px;cursor:pointer;transition:background .15s,color .15s}.lang-btn:hover{color:#e2e8f0}.lang-btn.active{background:#6378ff40;color:#a5b4fc}.logo-text{font-family:Outfit,sans-serif;font-size:26px;font-weight:800;letter-spacing:-.5px;background:linear-gradient(135deg,#60a5fa,#818cf8);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.logo-subtext{font-family:Inter,sans-serif;font-size:13px;font-weight:600;color:#94a3b8;letter-spacing:.5px;margin-left:2px}.search-container{flex:1;max-width:500px;margin:0 32px;position:relative}.search-input{width:100%;height:44px;border-radius:22px;border:1px solid rgba(255,255,255,.15);background:#ffffff0d;padding:0 44px 0 20px;color:#fff;font-size:15px;font-family:inherit;transition:all .2s ease}.search-input:focus{outline:none;border-color:var(--portal-accent);background:#ffffff1a}.search-icon{position:absolute;right:16px;top:50%;transform:translateY(-50%);color:var(--portal-sub);pointer-events:none;font-size:20px}.header-actions{display:flex;align-items:center;gap:16px}.btn-studio{background:var(--portal-accent);color:#fff;text-decoration:none;padding:10px 20px;border-radius:8px;font-weight:600;font-size:14px;transition:background .2s;display:flex;align-items:center;gap:8px;border:none;cursor:pointer;white-space:nowrap}.btn-studio:hover{background:#2563eb}.btn-studio .material-icons{font-size:18px}main{padding:40px 24px;max-width:1400px;margin:0 auto}.section-title{font-size:24px;font-weight:700;margin-bottom:8px;color:#fff}.feed-status{color:var(--portal-sub);margin:0 0 18px;min-height:20px}.portal-feedback{margin-bottom:18px}.portal-feedback:empty{display:none}.portal-feedback-box{border:1px solid var(--portal-border);border-radius:12px;padding:14px 16px;background:#ffffff08}.portal-feedback.is-error .portal-feedback-box{border-color:#f8717166;background:#f8717114}.portal-feedback-title{margin:0;font-weight:700}.portal-feedback-desc{margin:6px 0 0;color:var(--portal-sub);font-size:14px}.portal-retry-btn{margin-top:10px;border:1px solid rgba(255,255,255,.2);background:#ffffff14;color:#fff;border-radius:8px;padding:8px 12px;cursor:pointer}.portal-retry-btn:hover{background:#ffffff24}.project-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:32px 20px}.project-card{display:flex;flex-direction:column;text-decoration:none;color:inherit;cursor:pointer;transition:transform .2s ease,opacity .2s ease}.project-card:hover{transform:translateY(-4px)}.project-card.is-disabled{cursor:not-allowed;opacity:.72}.card-thumb-container{width:100%;aspect-ratio:9/16;margin-bottom:12px;border-radius:12px;overflow:hidden;background:#2a2f3a;position:relative;box-shadow:0 8px 24px #0000004d;border:1px solid rgba(255,255,255,.05)}.card-thumb{width:100%;height:100%;object-fit:cover;transition:transform .3s ease}.project-card:hover .card-thumb{transform:scale(1.05)}.card-badge{position:absolute;right:10px;top:10px;background:#f87171e6;color:#fff;font-size:11px;font-weight:700;border-radius:999px;padding:4px 8px}.card-info{display:flex;flex-direction:column;gap:4px}.card-title{font-size:16px;font-weight:600;color:#fff;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.card-author{font-size:14px;color:var(--portal-sub)}.card-meta{font-size:12px;color:#64748b;margin-top:2px}.card-skeleton .card-thumb-container,.card-skeleton-line{position:relative;overflow:hidden;background:#ffffff14}.card-skeleton-line{height:12px;border-radius:999px}.card-skeleton-line.w-80{width:80%}.card-skeleton-line.w-50{width:50%}.card-skeleton-line.w-30{width:30%}.card-skeleton .card-thumb-container:after,.card-skeleton-line:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%);background:linear-gradient(100deg,transparent 20%,rgba(255,255,255,.2) 50%,transparent 80%);animation:portal-shimmer 1.3s infinite}@keyframes portal-shimmer{to{transform:translate(100%)}}.portal-empty{grid-column:1 / -1;text-align:center;padding:44px 18px;border-radius:16px;border:1px dashed var(--portal-border);background:#ffffff08}.portal-empty-icon{margin:0;font-size:34px}.portal-empty-title{margin:8px 0 0;font-size:22px}.portal-empty-desc{color:var(--portal-sub);margin:10px auto 0;max-width:480px;line-height:1.6}.btn-empty-action{display:inline-flex;align-items:center;justify-content:center;margin-top:16px;padding:10px 14px;border-radius:10px;text-decoration:none;color:#fff;background:var(--portal-accent);font-weight:700}.btn-empty-action:hover{background:#2563eb}@media (max-width: 768px){#portal-header{flex-wrap:wrap;padding:10px 14px 12px;gap:10px}.logo-subtext{display:none}.search-container{margin:0;order:3;width:100%;max-width:100%}.search-input{height:40px;font-size:14px}.btn-studio{padding:8px 12px;font-size:13px;border-radius:10px}main{padding:24px 14px 32px}.section-title{font-size:21px}.project-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:16px 10px}.card-title{font-size:14px}.card-author{font-size:13px}.card-meta{font-size:11px}}#auth-area{display:flex;align-items:center;position:relative}.btn-signin{display:flex;align-items:center;gap:6px;padding:6px 14px;border-radius:20px;font-size:13px;font-weight:600;cursor:pointer;border:1px solid #3d5afe;background:transparent;color:#7c9cff;transition:background .15s;white-space:nowrap}.btn-signin .material-icons{font-size:18px}.btn-signin:hover{background:#6378ff1f}.auth-user{position:relative}.auth-avatar-btn{width:32px;height:32px;border-radius:50%;overflow:hidden;cursor:pointer;border:none;padding:0;background:#334155;display:flex;align-items:center;justify-content:center;flex-shrink:0}.auth-avatar-btn img{width:32px;height:32px;object-fit:cover;border-radius:50%;display:block}.auth-avatar-btn .auth-initials{font-size:13px;font-weight:700;color:#fff;line-height:1}.auth-dropdown{position:absolute;top:calc(100% + 8px);right:0;background:#1e293b;border:1px solid #334155;border-radius:10px;padding:8px 0;min-width:180px;box-shadow:0 8px 24px #0006;z-index:200;display:none}.auth-dropdown.open{display:block}.auth-dropdown-name{padding:8px 16px 10px;font-size:13px;color:#94a3b8;border-bottom:1px solid #334155;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn-signout{display:block;width:100%;padding:8px 16px;text-align:left;font-size:13px;font-weight:500;color:#e2e8f0;background:transparent;border:none;cursor:pointer;transition:background .15s}.btn-signout:hover{background:#ffffff0f}#my-projects-section{margin-bottom:40px}#my-projects-section.hidden{display:none}.my-project-card{display:flex;flex-direction:column;border-radius:14px;overflow:hidden;background:var(--surface, #fff);box-shadow:0 2px 8px #00000012;text-decoration:none;color:inherit;transition:transform .18s,box-shadow .18s}.my-project-card:hover{transform:translateY(-3px);box-shadow:0 6px 20px #0000001f}.my-projects-loading,.my-projects-empty{grid-column:1 / -1;text-align:center;color:var(--text-secondary, #64748b);font-size:14px;padding:24px 0}.visi-badge{position:absolute;bottom:6px;right:6px;font-size:10px;font-weight:700;padding:2px 7px;border-radius:6px;pointer-events:none}.visi-badge.is-public{background:#22c55e;color:#fff}.visi-badge.is-private{background:#00000073;color:#fff}
