VOL. 06 / 编辑型法律 AI 情报本周信号已校对 · 06
← 返回首页
ARTICLE DOSSIERREF / A172BCAD
判例🇺🇸 美国重要

Anthropic面临AI版权诉讼新进展

SOURCE / Anthropic-官方网站 · www.anthropic

原文

www.anthropic

完整原文

:root { --site--max-width: min(var(--site--width), 100vw); --container--main: calc(var(--site--max-width) - var(--site--margin) * 2); --container--full: calc(100% - 4rem); --container--small: calc(var(--column-width--plus-gutter) * (var(--site--column-count) - 4) - var(--site--gutter)); --site--gutter-total: calc(var(--site--gutter) * (var(--site--column-count) - 1)); --column-width--1: calc((var(--container--main) - var(--site--gutter-total)) / var(--site--column-count)); --column-width--plus-gutter: calc(var(--column-width--1) + var(--site--gutter)); --column-width--2: calc(var(--column-width--plus-gutter) * 2 - var(--site--gutter)); --column-width--3: calc(var(--column-width--plus-gutter) * 3 - var(--site--gutter)); --column-width--4: calc(var(--column-width--plus-gutter) * 4 - var(--site--gutter)); --column-width--5: calc(var(--column-width--plus-gutter) * 5 - var(--site--gutter)); --column-width--6: calc(var(--column-width--plus-gutter) * 6 - var(--site--gutter)); --column-width--7: calc(var(--column-width--plus-gutter) * 7 - var(--site--gutter)); --column-width--8: calc(var(--column-width--plus-gutter) * 8 - var(--site--gutter)); --column-width--9: calc(var(--column-width--plus-gutter) * 9 - var(--site--gutter)); --column-width--10: calc(var(--column-width--plus-gutter) * 10 - var(--site--gutter)); --column-width--11: calc(var(--column-width--plus-gutter) * 11 - var(--site--gutter)); --column-width--12: calc(var(--column-width--plus-gutter) * 12 - var(--site--gutter)); --column-margin--1: calc(var(--column-width--plus-gutter) * 1); --column-margin--2: calc(var(--column-width--plus-gutter) * 2); --column-margin--3: calc(var(--column-width--plus-gutter) * 3); --column-margin--4: calc(var(--column-width--plus-gutter) * 4); --column-margin--5: calc(var(--column-width--plus-gutter) * 5); --column-margin--6: calc(var(--column-width--plus-gutter) * 6); --column-margin--7: calc(var(--column-width--plus-gutter) * 7); --column-margin--8: calc(var(--column-width--plus-gutter) * 8); --column-margin--9: calc(var(--column-width--plus-gutter) * 9); --column-margin--10: calc(var(--column-width--plus-gutter) * 10); --column-margin--11: calc(var(--column-width--plus-gutter) * 11); --column-margin--12: calc(var(--column-width--plus-gutter) * 12); --breakout-start: [full-start] minmax(0, 1fr) [content-start]; --breakout-end: [content-end] minmax(0, 1fr) [full-end]; --grid-breakout-single: var(--breakout-start) minmax(0, var(--container--main)) var(--breakout-end); --grid-breakout: var(--breakout-start) repeat(var(--site--column-count), minmax(0, var(--column-width--1))) var(--breakout-end); --grid-main: repeat(var(--site--column-count), minmax(0, 1fr)); --grid-1: repeat(1, minmax(0, 1fr)); --grid-2: repeat(2, minmax(0, 1fr)); --grid-3: repeat(3, minmax(0, 1fr)); --grid-4: repeat(4, minmax(0, 1fr)); --grid-5: repeat(5, minmax(0, 1fr)); --grid-6: repeat(6, minmax(0, 1fr)); --grid-7: repeat(7, minmax(0, 1fr)); --grid-8: repeat(8, minmax(0, 1fr)); --grid-9: repeat(9, minmax(0, 1fr)); --grid-10: repeat(10, minmax(0, 1fr)); --grid-11: repeat(11, minmax(0, 1fr)); --grid-12: repeat(12, minmax(0, 1fr)); --_typography---text-transform--none: none; --_typography---text-transform--uppercase: uppercase; --_typography---text-transform--captialize: capitalize; --_typography---text-transform--lowercase: lowercase; --align--flex-start: flex-start; --align--flex-center: center; --align--flex-end: flex-end; --align--text-left: left; --align--text-center: center; --align--text-right: right; } ::before, ::after { box-sizing: border-box; } html { background-color: var(--_theme---background); } button { background-color: unset; padding: unset; text-align: inherit; } button:not(:disabled) { cursor: pointer; } video { width: 100%; object-fit: cover; } video.wf-empty { padding: 0; } svg { max-width: 100%; } section, header, footer { position: relative; } @media (prefers-color-scheme: light) { option { color: black; } } img::selection { background: transparent; } /* Typography */ body { text-transform: var(--_text-style---text-transform); font-smoothing: antialiased; -webkit-font-smoothing: antialiased; } /* Clear Defaults */ a:not([class]) { text-decoration: underline; } h1,h2,h3,h4,h5,h6,p,blockquote,label { font-family: inherit; font-size: inherit; font-weight: inherit; line-height: inherit; letter-spacing: inherit; text-transform: inherit; text-wrap: inherit; margin-top: 0; margin-bottom: 0; } /* Margin Trim */ :is(.u-margin-trim, .u-rich-text) > :not(:not(.w-condition-invisible) ~ :not(.w-condition-invisible)) { margin-top: 0; } :is(.u-margin-trim, .u-rich-text) > :not(:has(~ :not(.w-condition-invisible))) { margin-bottom: 0; } .w-richtext a { position: relative; z-index: 4; } /* Line Height Trim */ :is([class*="u-text-style-"],h1,h2,h3,h4,h5,h6,p):not(.w-richtext,.u-text-trim-off)::before { content: ""; display: table; margin-bottom: calc(-0.5lh + var(--_text-style---trim-top)); } :is([class*="u-text-style-"],h1,h2,h3,h4,h5,h6,p):not(.w-richtext,.u-text-trim-off)::after { content: ""; display: table; margin-bottom: calc(-0.5lh + var(--_text-style---trim-bottom)); } /* Line Clamp */ .u-line-clamp-1, .u-line-clamp-2, .u-line-clamp-3, .u-line-clamp-4 { -webkit-line-clamp: 1; -webkit-box-orient: vertical; } .u-line-clamp-2 { -webkit-line-clamp: 2; } .u-line-clamp-3 { -webkit-line-clamp: 3; } .u-line-clamp-4 { -webkit-line-clamp: 4; } /* Child Contain */ .u-child-contain > * { width: 100%; max-width: inherit !important; margin-inline: 0 !important; margin-top: 0 !important; } /* Hide */ .u-hide-if-empty:empty, .u-hide-if-empty:not(:has(> :not(.w-condition-invisible))), .u-hide-if-empty-cms:not(:has(.w-dyn-item)), .u-embed-js, .u-embed-css { display: none !important; } /* Focus State */ a, button, :where([tabindex]), .w-checkbox-input--inputType-custom, .w-form-formradioinput--inputType-custom { outline-offset: var(--focus--offset-outer); } a:focus-visible, button:focus-visible, [tabindex]:focus-visible, .w-checkbox:has(:focus-visible) .w-checkbox-input--inputType-custom, .w-radio:has(:focus-visible) .w-form-formradioinput--inputType-custom { outline-color: var(--_color-theme---text); outline-width: var(--focus--width); outline-style: solid; } .w-checkbox-input--inputType-custom.w--redirected-focus, .w-form-formradioinput--inputType-custom.w--redirected-focus { box-shadow: none; } /* Global / Clickable Component */ .wf-design-mode .g_clickable_wrap { z-index: 0; } .g_clickable_wrap a[href="#"] { display: none; } .g_clickable_wrap a[href="#"] ~ button { display: block; } /* Hide scrollbar for Chrome, Safari and Opera */ html-scrollbar { display: none !important; } ::-moz-selection { /* Code for Firefox */ background: rgba(204,120,92,.5); } ::selection { background: rgba(204,120,92,.5); } h1 a { text-underline-offset: 0.08em; } /* Rich text styling */ .mcp_directory_link, .mcp_directory_link_icon, .u-rich-text a, .u-rich-text ul li a, .u-paragraph-m a { text-underline-offset: 0.2em !important; text-decoration-thickness: 0.06em; } .u-rich-text strong em, .u-rich-text em strong, .u-paragraph-m strong { line-height: 1; vertical-align: baseline; } /* Logo marquee */ .logo_marquee_logo_component { -webkit-animation: marquee 48s linear infinite; -moz-animation: marquee 48s linear infinite; -o-animation: marquee 48s linear infinite; } /* When hovering the marquee container, pause all logos */ .logo_marquee:hover .logo_marquee_logo_component { -webkit-animation-play-state: paused; -moz-animation-play-state: paused; -o-animation-play-state: paused; animation-play-state: paused; } @media (prefers-reduced-motion) { .logo_marquee_logo_component { -webkit-animation-play-state: paused; -moz-animation-play-state: paused; -o-animation-play-state: paused; animation-play-state: paused; } } @-webkit-keyframes marquee { 0% { transform: translateX(0%); } 100% { transform: translateX(-100%); } } @-moz-keyframes marquee { 0% { transform: translateX(0%); } 100% { transform: translateX(-100%); } } @-o-keyframes marquee { 0% { transform: translateX(0%); } 100% { transform: translateX(-100%); } } @keyframes marquee { 0% { transform: translateX(0%); } 100% { transform: translateX(-100%); } } /* Custom styling for slider dots */ .w-slider-dot { background-color: var(--swatch--cloud-light) !important; width: 12px !important; height: 12px !important; margin: 0 6px !important; border-radius: 50% !important; padding: 0 !important; } .w-slider-dot.w-active, .w-slider-dot:hover { background-color: var(--swatch--slate-light) !important; } /* Target slide wrappers that are hidden (non-active slides) */ .slider_slide[aria-hidden="true"] { opacity: 0.3 !important; transition: opacity 0.2s ease !important; } /* Target active slides (no aria-hidden or aria-hidden="false") */ .slider_slide:not([aria-hidden="true"]) { opacity: 1 !important; transition: opacity 0.2s ease !important; } /* Only apply hover effect when the card contains a link */ .article_card:has(a):hover .g_visual_img, .card:has(a):hover .g_visual_img { transform: scale(1.05); transition: transform 0.2s ease; } /* Make sure the image has a smooth transition by default */ .g_visual_img { transition: transform 0.2s ease; } /*--- TABS ---*/ /* Removes ::before and ::after from Tabs that create empty spaces when using Grid/Flex (with gaps) */ .tabs::before, .tabs::after { display: none; } /*--- TERMINAL ---*/ /* Clean, minimal scrollbar styling for terminal_content */ .terminal_content::-webkit-scrollbar { width: 6px; /* Thin vertical scrollbar */ height: 6px; /* Thin horizontal scrollbar */ } .terminal_content::-webkit-scrollbar-track { background: transparent; /* Invisible track */ margin: 4px; /* Creates space from the edge */ } .terminal_content::-webkit-scrollbar-thumb { background: rgba(250, 249, 240, 0.3); /* Subtle cream color */ border-radius: 3px; /* Slightly rounded edges */ border-right: 6px solid transparent; /* Increased space on the right edge */ border-left: 4px solid transparent; /* Space on the left edge */ background-clip: content-box; /* Ensures background only applies to visible area */ } .terminal_content::-webkit-scrollbar-thumb:hover { background: rgba(250, 249, 240, 0.5); /* Brighter on hover - works in Chrome */ background-clip: content-box; /* Maintain the same behavior on hover */ } .terminal_content::-webkit-scrollbar-thumb:horizontal { border-top: 4px solid transparent; border-bottom: 6px solid transparent; /* Increased space from the bottom */ border-left: 4px solid transparent; border-right: 4px solid transparent; background-clip: content-box; } .terminal_content::-webkit-scrollbar-corner { background: transparent; /* For the corner where both scrollbars meet */ } /* Firefox */ .terminal_content { scrollbar-width: thin; scrollbar-color: rgba(250, 249, 240, 0.3) transparent; } /* Remove padding on Result tab */ .terminal_content.result-view { padding: 0px; } /*--- MODAL ---*/ /* Modal mods */ dialog.modal_wrap[open] { animation: fadein 400ms ease-out forwards; } dialog.modal_wrap::backdrop { background: color-mix(in srgb, var(--swatch--slate-dark) 80%, transparent); } @keyframes fadein{ 0%{ opacity:0; } 100%{ opacity:1; } } /*--- Hide element if child CMS collection is empty ---*/ [data-hide-if-empty-cms-child]:not(:has(.w-dyn-item)) { display: none; } /* In Designer only hacks html.wf-design-mode .g_clickable_wrap { pointer-events: none; } html.wf-design-mode a[href="#"], html.wf-design-mode a[href="#"] ~ button { outline: 3px solid red; } */ :root {--site--margin: clamp(2rem, 1.0816326530612246rem + 3.9183673469387754vw, 5rem);--size--2rem: clamp(1.75rem, 1.6734693877551021rem + 0.326530612244898vw, 2rem);--size--2-5rem: clamp(2rem, 1.846938775510204rem + 0.653061224489796vw, 2.5rem);--size--3rem: clamp(2.25rem, 2.020408163265306rem + 0.9795918367346939vw, 3rem);--size--3-5rem: clamp(2.375rem, 2.0306122448979593rem + 1.4693877551020407vw, 3.5rem);--size--4rem: clamp(2.5rem, 2.0408163265306123rem + 1.9591836734693877vw, 4rem);--size--4-5rem: clamp(2.75rem, 2.2142857142857144rem + 2.2857142857142856vw, 4.5rem);--size--5rem: clamp(3rem, 2.3877551020408165rem + 2.612244897959184vw, 5rem);--size--5-5rem: clamp(3.25rem, 2.561224489795918rem + 2.9387755102040813vw, 5.5rem);--size--6rem: clamp(3.5rem, 2.7346938775510203rem + 3.2653061224489797vw, 6rem);--size--6-5rem: clamp(3.75rem, 2.9081632653061225rem + 3.5918367346938775vw, 6.5rem);--size--7rem: clamp(4rem, 3.0816326530612246rem + 3.9183673469387754vw, 7rem);--size--7-5rem: clamp(4.25rem, 3.2551020408163267rem + 4.244897959183674vw, 7.5rem);--size--8rem: clamp(4.5rem, 3.4285714285714284rem + 4.571428571428571vw, 8rem);--size--8-5rem: clamp(4.75rem, 3.6020408163265305rem + 4.8979591836734695vw, 8.5rem);--size--9rem: clamp(5rem, 3.7755102040816326rem + 5.224489795918368vw, 9rem);--size--9-5rem: clamp(5.25rem, 3.9489795918367347rem + 5.551020408163265vw, 9.5rem);--size--10rem: clamp(5.5rem, 4.122448979591836rem + 5.877551020408163vw, 10rem);--size--11rem: clamp(5.75rem, 4.142857142857143rem + 6.857142857142858vw, 11rem);--size--12rem: clamp(6rem, 4.163265306122449rem + 7.836734693877551vw, 12rem);--size--13rem: clamp(6.5rem, 4.510204081632653rem + 8.489795918367347vw, 13rem);--size--14rem: clamp(7rem, 4.857142857142857rem + 9.142857142857142vw, 14rem);--size--15rem: clamp(7.5rem, 5.204081632653061rem + 9.795918367346939vw, 15rem);---font-size--display-xs: clamp(1.125rem, 1.086734693877551rem + 0.163265306122449vw, 1.25rem);---font-size--display-s: clamp(1.25rem, 1.1734693877551021rem + 0.326530612244898vw, 1.5rem);---font-size--display-m: clamp(1.75rem, 1.6734693877551021rem + 0.326530612244898vw, 2rem);---font-size--display-l: clamp(2rem, 1.6938775510204083rem + 1.306122448979592vw, 3rem);---font-size--display-xl: clamp(2.5rem, 2.0408163265306123rem + 1.9591836734693877vw, 4rem);---font-size--display-xxl: clamp(3rem, 2.3877551020408165rem + 2.612244897959184vw, 5rem);---font-size--paragraph-s: clamp(1rem, 0.9617346938775511rem + 0.163265306122449vw, 1.125rem);---font-size--paragraph-m: clamp(1.125rem, 1.086734693877551rem + 0.163265306122449vw, 1.25rem);---font-size--paragraph-l: clamp(1.375rem, 1.336734693877551rem + 0.163265306122449vw, 1.5rem);---font-size--detail-xs: clamp(0.6875rem, 0.6683673469387755rem + 0.0816326530612245vw, 0.75rem);---font-size--detail-xs: clamp(1.375rem, 1.336734693877551rem + 0.163265306122449vw, 1.5rem);---font-size--monospace: clamp(0.875rem, 0.5306122448979592rem + 1.4693877551020407vw, 2rem);} :root { --nav--height: 4.25rem; --nav--banner-height: 2.75rem; --nav--height-total: var(--nav--height); --nav--icon-thickness: var(--border-width--main); --nav--hamburger-thickness: var(--nav--icon-thickness); --nav--hamburger-gap: 0.4rem; --nav--hamburger-rotate: 45; --nav--menu-open-duration: 400ms; --nav--menu-close-duration: 400ms; --nav--dropdown-duration: 200ms; --nav--dropdown-open-duration: 200ms; --nav--dropdown-delay: 0ms; } /* On smaller screens */ @media (width < 56em) { /* Disable scroll when mobile menu is open */ --nav--height: 4.375rem; body:has(.nav_component .w-nav-button.w--open) { overflow: hidden; } .nav_menu_wrap { padding-top: 4.375rem; } .nav_buttons_item { flex-flow: column !important; width: 100%; } .nav_dropdown_main_ad, .nav_btn_combo_wrap { display: none !important; } } /* On larger screens */ @container (min-width: 56em) { /* show desktop nav & dropdown backdrop */ .nav_wrap.is-desktop { display: block; } /* hide mobile nav & mobile menu backdrop */ .nav_wrap.is-mobile { display: none; } /* nav height on larger than responsive nav */ .nav_contain { height: var(--nav--height); } .nav_buttons_item .btn_main_wrap:nth-of-type(2) { display: none; } } /* dropdown list: initial state */ html:not(.wf-design-mode) .nav_dropdown_component > .w-dropdown-list { /* removes display none to enable css transitions */ display: grid; grid-template-columns: minmax(0, 1fr); /* sets list to 0 height by default */ grid-template-rows: 0fr; transition: opacity var(--nav--menu-open-duration) cubic-bezier(.77,0,.175,1); /* makes list content not focusable when closed */ visibility: hidden; opacity: 0; width: max-content; } /* makes list content focusable when opened */ html:not(.wf-design-mode) .nav_dropdown_component > .w-dropdown-list.w--open { visibility: visible; opacity: 1; } /* Ensure dropdown content is properly contained */ html:not(.wf-design-mode) .nav_dropdown_component > .w-dropdown-list > .nav_dropdown_main_content { /* Required for grid-template-rows transition to work */ min-height: 0; overflow: hidden; } /* set open state of dropdown list */ .nav_dropdown_component:has(> .w-dropdown-toggle[aria-expanded="true"]) > .w-dropdown-list { --nav--dropdown-duration: var(--nav--dropdown-open-duration); grid-template-rows: 1fr; } /* on desktop, delay dropdown opening if another dropdown is open */ .nav_wrap.is-desktop:has(.nav_dropdown_component > .w-dropdown-toggle.w--open[aria-expanded="false"]) .nav_dropdown_component:has(> .w--open[aria-expanded="true"]) > .w-dropdown-list { transition-delay: var(--nav--dropdown-duration); } /* set open state of dropdown list */ .nav_dropdown_component:has(> .w-dropdown-toggle[aria-expanded="true"]) > .nav_dropdown_main_wrap { padding-bottom: 1.5rem; } /* rotate arrow inside open dropdown */ .w-dropdown-toggle[aria-expanded="true"] .nav_links_svg { transform: rotate(-180deg); } /* animate first hamburger line when opened */ .nav_component .w-nav-button.w--open > * > :first-child { transform: translateY(calc(var(--nav--hamburger-thickness) * 0.75 + var(--nav--hamburger-gap) * 1)) rotate(calc(var(--nav--hamburger-rotate) * -1deg)); } /* animate second hamburger line when opened */ .nav_component .w-nav-button.w--open > * > :last-child { transform: translateY(calc(var(--nav--hamburger-thickness) * -0.75 + var(--nav--hamburger-gap) * -1)) rotate(calc(var(--nav--hamburger-rotate) * 1deg)); width: 100%; } .nav_component .w-nav-button.w--open > * > :nth-child(2) { opacity: 0; } /* menu animations */ @keyframes menuOpen { from { clip-path: polygon(0 0, 100% 0, 100% 0, 0 0); } to { clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%); } } @keyframes menuClose { from { clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%); } to { clip-path: polygon(0 0, 100% 0, 100% 0, 0 0); } } /* menu open */ .nav_component:has(.w-nav-button.w--open) .w-nav-menu { animation: menuOpen var(--nav--menu-open-duration) ease-in-out forwards; } /* menu close */ .nav_component:has(.w-nav-button:not(.w--open)) .w-nav-menu { animation: menuClose var(--nav--menu-close-duration) ease-in-out forwards; } /* position overflow to top of screen */ .nav_component .w-nav-overlay { top: 0; min-height: 100vh; } /* search focus underline */ .nav_search_wrap:has(input:focus-visible) { border-color: var(--_theme---text); } /* open dropdown on mobile */ .nav_wrap.is-mobile [data-open-on-mobile] > .w-dropdown-toggle { display: none; } .nav_wrap.is-mobile [data-open-on-mobile] > .w-dropdown-list { visibility: visible; opacity: 1; display: block; grid-template-rows: 1fr; } /* Rotate Nav Banner Arrow When External Link */ a[target="_blank"] .nav_banner_svg { transform: rotate(-45deg); } /* nav banner */ html:has(.nav_banner_wrap:not(.w-condition-invisible)):not(.hide-nav-banner) { --nav--height-total: calc(var(--nav--banner-height) + var(--nav--height)); } .hide-nav-banner .nav_banner_wrap { display: none; } /* Animating image on hover */ .nav_dropdown_main_ad:hover .g_visual_img { transform: scale(1.05); transition: transform 0.2s ease; } /* Make sure the image has a smooth transition by default */ .g_visual_img { transition: transform 0.2s ease; } /* Change the color of nav link out icon when hovered */ .nav_dropdown_link:hover .nav_linkout_icon{ color: inherit; } /* Update the styling of nav button dropdown on mobile*/ .nav_wrap.is-mobile .nav_links_link.is-btn-dropdown{ padding-top: var(--_spacing---space--5); padding-right: 0; padding-bottom: var(--_spacing---space--5); } /* Remove the desktop styling from button dropdown icon on mobile*/ .nav_wrap.is-mobile .btn_dropdown_link_wrap{ padding: 0px; background-color: transparent; border: none; color: inherit; width: 100%; } /* Remove the desktop styling from button dropdown icon wrapper on mobile*/ .nav_wrap.is-mobile .btn_dropdown_icon_wrap{ padding: 0px; height: auto; border: none; } /* Unhide the actions wrapper to show the buttons on mobile */ .nav_wrap.is-mobile .nav_actions_wrap{ display:flex; } /* Set the dropdown menu to full width on mobile */ .nav_wrap.is-mobile .nav_dropdown_component > .w-dropdown-list.w--open{ width: 100%; } /* Remove extra margin from the dropdown on mobile */ .nav_wrap.is-mobile .nav_dropdown_main_content{ margin-top: 0px; } /* Hide the login button inside the cloud dropdown on mobile*/ .nav_links_item.is-mobile:last-child .btn_main_wrap.is-nav{ display: none; } /* Remove the underline from button dropdown text */ .nav_links_link.is-btn-dropdown .nav_links_text:hover{ text-decoration: none; } .nav_dropdown_component.u-position-relative{ position: relative !important; } .nav_links_link.is-btn-dropdown ~ .nav_dropdown_main_wrap.is-desktop{ transform: translate(0%); right: 0; } Skip to main contentSkip to footerResearchPolicyCommitments InitiativesClaude's ConstitutionClaude CorpsPolicy on the AI ExponentialTransparencyResponsible Scaling PolicyTrust centerSecurity and complianceLearn LearnAnthropic AcademyTutorialsUse casesEngineering at AnthropicDeveloper docsCompanyAboutCareersEventsNewsTry ClaudeTry ClaudeTry ClaudeLearn more about Claude ProductsClaudeClaude CodeClaude CoworkClaude DesignClaude SecurityClaude PlatformPricingContact salesModelsMythosFableOpusSonnetHaikuLog inClaude.aiClaude ConsoleENThis is some text inside of a div block.Log in to ClaudeLog in to ClaudeLog in to ClaudeDownload appDownload appDownload appResearchPolicyCommitments InitiativesClaude's ConstitutionClaude CorpsPolicy on the AI ExponentialTransparencyResponsible Scaling PolicyTrust centerSecurity and complianceLearn LearnAnthropic AcademyTutorialsUse casesEngineering at AnthropicDeveloper docsCompanyAboutCareersEventsNewsTry ClaudeTry ClaudeTry ClaudeLearn more about Claude ProductsClaudeClaude CodeClaude CoworkClaude DesignClaude SecurityClaude PlatformPricingContact salesModelsMythosFableOpusSonnetHaikuLog inClaude.aiClaude ConsoleENThis is some text inside of a div block.Log in to ClaudeLog in to ClaudeLog in to ClaudeDownload appDownload appDownload appAI research and products that put safety at the frontierAI will have a vast impact on the world. Anthropic is a public benefit corporation dedicated to securing its benefits and mitigating its risks. /* ── GSAP animations initial state ── */ html:not(.wf-design-mode) [data-scroll="title"], html:not(.wf-design-mode) [data-scroll="subtitle"], html:not(.wf-design-mode) [data-scroll="button"] { opacity: 0; transform: translateY(10%); } html:not(.wf-design-mode) [data-scroll="embed"] { opacity: 0; } /* ── Viewport ── */ #viewport { width: 100%; height: 110%; position: relative; display: flex; align-items: center; justify-content: center; background: #e8e6dc; overflow: hidden; } /* ── Globe SVG ── */ .globe-svg { width: 100%; height: 100%; cursor: default; } .globe-svg.dragging { cursor: grabbing; } .globe-deg-label { font-family: var(--serif); font-size: 11px; font-weight: 400; fill: rgba(20, 20, 19, 0.5); text-anchor: middle; dominant-baseline: middle; font-variant-numeric: oldstyle-nums; user-select: none; } /* ── Intro frame ── */ #intro-frame { position: absolute; top: 60px; left: 50%; transform: translateX(-50%); display: flex; flex-direction: column; align-items: center; gap: 4px; pointer-events: none; z-index: 10; } #globe-title { font-family: var(--serif); font-size: 61px; line-height: 1.2; font-weight: 400; color: #141413; text-align: center; white-space: nowrap; user-select: none; } #globe-subtext { width: 412px; max-width: 412px; font-family: var(--sans); font-size: 13px; line-height: 1.5; font-weight: 400; color: #30302e; text-align: left; text-wrap: pretty; user-select: none; } #globe-subtext a { pointer-events: auto; } /* ── Quote overlay ── */ #quote-overlay { position: absolute; top: 65%; left: 50%; transform: translateX(-50%); width: 520px; z-index: 8; background: radial-gradient(ellipse at center, rgba(232, 230, 220, 0.95) 0%, rgba(232, 230, 220, 0.95) 50%, rgba(232, 230, 220, 0) 100%); padding: 24px 28px; border-radius: 4px; } #step-dots { display: flex; gap: 8px; margin-bottom: 12px; } .step-dot { width: 7px; height: 7px; border-radius: 50%; border: 1px solid rgba(20, 20, 19, 0.3); background: transparent; cursor: pointer; transition: background 0.3s; } .step-dot:hover { background: rgba(20, 20, 19, 0.15); } .step-dot.active { background: rgba(20, 20, 19, 0.3); } #country-label { font-family: var(--sans); font-size: 13px; font-weight: 700; letter-spacing: 0.13px; text-transform: uppercase; color: #141413; margin-bottom: 6px; line-height: 1; text-align: left; } .hl-yellow { display: inline; padding: 0.02em 0.22em 0.08em; border-radius: 4px; color: #141413; background: color-mix(in srgb, #eda100 60%, transparent); font-family: var(--_typography---font--display-sans); } #quote-text { font-family: var(--serif); font-size: 26px; line-height: 1.4; font-weight: 400; color: #141413; min-height: 3em; text-align: left; text-indent: -0.5em; padding-left: 0.5em; } /* ── Typewriter cursor ── */ .sf-tw-cursor { display: inline-block; width: 1.5px; height: 0.85em; background: currentcolor; margin-left: 1px; vertical-align: -0.1em; } .sf-tw-cursor.sf-blinking { animation: sf-tw-blink 0.9s step-end infinite; } @keyframes sf-tw-blink { 0%, 100% { opacity: 1; } 50% { opacity: 0; } } /* ── Dot legend ── */ #dot-legend { position: absolute; bottom: 28px; right: 28px; font-family: var(--sans); font-size: 11px; line-height: 1.4; color: rgba(20, 20, 19, 0.45); pointer-events: none; z-index: 10; text-align: right; } /* ── Skip button ── */ #skip-btn { position: absolute; bottom: 28px; left: 50%; transform: translateX(-50%); font-family: var(--sans); font-size: 13px; font-weight: 400; color: #30302e; background: rgba(245, 244, 237, 0.4); backdrop-filter: blur(5px); border: 1px solid rgba(194, 192, 182, 0.3); border-radius: 4px; padding: 8px 16px; cursor: pointer; z-index: 20; transition: background 0.2s; } #skip-btn:hover { background: rgba(245, 244, 237, 0.8); } /* ── Mobile ── */ @media (max-width: 600px) { #viewport { top: -28%; left: -35%; width: 170%; height: 170%; } #globe-title { font-size: 32px; white-space: normal; } #intro-frame { top: 32px; width: calc(100% - 32px); } #globe-subtext { font-size: 10px; width: 100%; max-width: 100%; } #quote-overlay { width: 280px; padding: 16px 20px; top: 60%; } #quote-text { font-size: 14px; min-height: 2.5em; } #dot-legend { bottom: 72px; right: 16px; font-size: 10px; max-width: 120px; } #country-label { font-size: 11px; } .hl-yellow { border-radius: 2px; } } What 81,000 people want from AIThe largest study ever done on AI and how it's shaping lives around the world.Read more Read MoreRead More document.addEventListener("DOMContentLoaded", function() { //---- Animations ---- gsap.registerPlugin(ScrollTrigger); const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches; const containerMargin = window.matchMedia('(max-width: 479px)').matches ? '2rem' : '4rem'; //const sectionStart = window.matchMedia('(max-width: 479px)').matches ? 'top 40%' : 'top 70%'; if (!prefersReducedMotion) { const section = document.querySelector('[data-scroll="section"]'); const bg = section.querySelector('[data-scroll="bg"]'); const container = section.querySelector('[data-scroll="container"]'); const titleWrap = section.querySelector('[data-scroll="title-wrap"]'); const title = section.querySelector('[data-scroll="title"]'); const subtitle = section.querySelector('[data-scroll="subtitle"]'); const button = section.querySelector('[data-scroll="button"]'); const embed = section.querySelector('[data-scroll="embed"]'); // bg + container gsap.timeline({ scrollTrigger: { trigger: section, start: 'top 30%', end: 'bottom 70%', markers: false, scrub: 0.8 } }) .to(bg, { maxWidth: '100%', marginTop: 0, marginBottom: 0, borderRadius: '0px', duration: 1.25, ease: 'power2.out' }, 0) .to(container, { marginTop: containerMargin, marginBottom: containerMargin, duration: 1.25, ease: 'power2.out' }, 0.05); // title, subtitle, button gsap.timeline({ scrollTrigger: { trigger: titleWrap, start: 'top 80%', end: 'bottom top', toggleActions: 'play none none reverse' } }) .to(title, { opacity: 1, y: '0%', duration: 0.6, ease: 'power2.out' }, 0.5) .to(embed, { opacity: 1, duration: 2, ease: 'power2.out' }, 0.5) .to(subtitle, { opacity: 1, y: '0%', duration: 0.9, ease: 'power2.out' }, 0.6) .to(button, { opacity: 1, y: '0%', duration: 1.3, ease: 'power2.out' }, 0.75); } }); (function () { "use strict"; // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ // Constants // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ var GLOBE_W = 1400, GLOBE_H = 1000; var GLOBE_CX = GLOBE_W / 2, GLOBE_CY = GLOBE_H / 2; var RADIUS = 560; var DEG = Math.PI / 180; var GRID_STEP = 5; var GRID_ALPHA = 0.18; var DOT_RADIUS = 1.2; var DIM_OPACITY = 0.28; var SF_STEP_DUR = 7000; var SF_DWELL = 0.78; var SF_SCROLL_PER_STEP = 1000; var SF_IDLE_TILT = 0; var SF_IDLE_ROLL = 0; // ── Country names ── var COUNTRY_NAMES = { AF: "AFGHANISTAN", AL: "ALBANIA", DZ: "ALGERIA", AR: "ARGENTINA", AU: "AUSTRALIA", AT: "AUSTRIA", AZ: "AZERBAIJAN", BD: "BANGLADESH", BE: "BELGIUM", BO: "BOLIVIA", BR: "BRAZIL", BG: "BULGARIA", CA: "CANADA", CM: "CAMEROON", CL: "CHILE", CN: "CHINA", CO: "COLOMBIA", HR: "CROATIA", CZ: "CZECHIA", DK: "DENMARK", EC: "ECUADOR", EG: "EGYPT", ET: "ETHIOPIA", FI: "FINLAND", FR: "FRANCE", GE: "GEORGIA", DE: "GERMANY", GH: "GHANA", GR: "GREECE", GT: "GUATEMALA", HN: "HONDURAS", HU: "HUNGARY", IN: "INDIA", ID: "INDONESIA", IQ: "IRAQ", IE: "IRELAND", IL: "ISRAEL", IT: "ITALY", JP: "JAPAN", JO: "JORDAN", KZ: "KAZAKHSTAN", KE: "KENYA", KW: "KUWAIT", LB: "LEBANON", MY: "MALAYSIA", MX: "MEXICO", MA: "MOROCCO", MM: "MYANMAR", NP: "NEPAL", NL: "NETHERLANDS", NZ: "NEW ZEALAND", NG: "NIGERIA", NO: "NORWAY", PK: "PAKISTAN", PE: "PERU", PH: "PHILIPPINES", PL: "POLAND", PT: "PORTUGAL", QA: "QATAR", RO: "ROMANIA", RU: "RUSSIA", SA: "SAUDI ARABIA", RS: "SERBIA", SG: "SINGAPORE", ZA: "SOUTH AFRICA", KR: "SOUTH KOREA", ES: "SPAIN", LK: "SRI LANKA", SE: "SWEDEN", CH: "SWITZERLAND", TW: "TAIWAN", TZ: "TANZANIA", TH: "THAILAND", TN: "TUNISIA", TR: "TURKEY", UA: "UKRAINE", AE: "UNITED ARAB EMIRATES", GB: "UNITED KINGDOM", US: "UNITED STATES", UZ: "UZBEKISTAN", VE: "VENEZUELA", VN: "VIETNAM", ZW: "ZIMBABWE", RW: "RWANDA", }; // ── Step centroids [lon, lat] ── var CENTROIDS = { AF: [67.7, 33.9], AL: [20.2, 41.2], DZ: [1.7, 28], AR: [-63.6, -38.4], AU: [133.8, -25.3], AT: [14.5, 47.5], AZ: [47.6, 40.1], BD: [90.4, 23.7], BE: [4.5, 50.5], BO: [-64.7, -16.3], BR: [-51.9, -14.2], BG: [25.5, 42.7], CA: [-96.8, 60.2], CL: [-71.5, -35.7], CN: [104.2, 35.9], CO: [-74.3, 4.1], HR: [15.2, 45.1], CZ: [15.5, 49.8], DK: [10, 56.3], EC: [-78.1, -1.8], EG: [30.8, 26.8], ET: [40.5, 9.1], FI: [26, 64], FR: [2.2, 46.2], GE: [43.4, 42.3], DE: [10.5, 51.1], GH: [-1, 8], GR: [21.8, 39.1], GT: [-90.2, 15.8], HU: [19.5, 47.2], IN: [78.9, 20.6], ID: [113.9, -0.8], IQ: [43.7, 33.2], IE: [-8.2, 53.4], IL: [34.9, 31], IT: [12.6, 41.9], JP: [138.3, 36.2], JO: [36.2, 31.2], KZ: [66.9, 48], KE: [37.9, 0], KW: [47.5, 29.3], LB: [35.9, 33.9], MY: [109.7, 4.2], MX: [-102.6, 24], MA: [-7.1, 31.8], MM: [96.7, 19.2], NP: [84.1, 28.4], NL: [5.3, 52.1], NZ: [172.5, -40.9], NG: [8.7, 9.1], NO: [8.5, 60.5], PK: [69.3, 30.4], PE: [-75, -9.2], PH: [122.9, 12.9], PL: [19.1, 52], PT: [-8.2, 39.6], QA: [51.2, 25.4], RO: [24.9, 45.9], RU: [99, 61.5], SA: [45.1, 24.7], RS: [21, 44], SG: [103.8, 1.4], ZA: [22.9, -30.6], KR: [127.8, 36], ES: [-3.7, 40.5], LK: [80.7, 7.9], SE: [18.6, 62.2], CH: [8.2, 46.8], TW: [120.9, 23.7], TZ: [34.9, -6.4], TH: [101, 15.9], TN: [9.6, 33.9], TR: [35.2, 39], UA: [31.4, 49], AE: [53.8, 23.4], GB: [-3.4, 55.4], US: [-98.5, 39.5], UZ: [64.6, 41.4], VE: [-66.6, 8], VN: [108.3, 14.1], ZW: [29.2, -20], RW: [29.9, -2], }; // ── Fallback quote steps ── var STEPS = [ { code: "US", label: "UNITED STATES", quote: "We\u2019ve found a unicorn and are using it to pull a plow." }, { code: "GT", label: "GUATEMALA", quote: "I feel like I\u2019m creating more dependency than knowledge." }, { code: "MA", label: "MOROCCO", quote: "It helps me finish my work faster so I can have time for my family." }, { code: "NG", label: "NIGERIA", quote: "No need for me if AI can do my work." }, { code: "DZ", label: "ALGERIA", quote: "I think I can even start a business alone and my partner will be AI." }, { code: "DK", label: "DENMARK", quote: "Everybody wishes they could experience the first fire, the first glimpse of electricity. This is now." }, { code: "IT", label: "ITALY", quote: "AI should learn to say two things: \u2018I don\u2019t know\u2019 and \u2018you\u2019re wrong.\u2019" }, { code: "CH", label: "SWITZERLAND", quote: "Who else would be available at 2am in a moment of anxiety?" }, { code: "DE", label: "GERMANY", quote: "I count myself lucky that I am living in a timeline where I can experience you." }, { code: "ID", label: "INDONESIA", quote: "The good news is that everyone can use AI, and the bad news is that everyone can use AI." }, ]; // ── ISO 3166-1 numeric → alpha-2 mapping ── var ISO_NUM = { "004": "AF", "008": "AL", "012": "DZ", "032": "AR", "036": "AU", "040": "AT", "031": "AZ", "050": "BD", "056": "BE", "068": "BO", "076": "BR", 100: "BG", 124: "CA", 120: "CM", 152: "CL", 156: "CN", 170: "CO", 191: "HR", 203: "CZ", 208: "DK", 218: "EC", 818: "EG", 231: "ET", 246: "FI", 250: "FR", 268: "GE", 276: "DE", 288: "GH", 300: "GR", 320: "GT", 340: "HN", 348: "HU", 356: "IN", 360: "ID", 368: "IQ", 372: "IE", 376: "IL", 380: "IT", 392: "JP", 400: "JO", 398: "KZ", 404: "KE", 414: "KW", 422: "LB", 458: "MY", 484: "MX", 504: "MA", 104: "MM", 524: "NP", 528: "NL", 554: "NZ", 566: "NG", 578: "NO", 586: "PK", 604: "PE", 608: "PH", 616: "PL", 620: "PT", 634: "QA", 642: "RO", 643: "RU", 682: "SA", 688: "RS", 702: "SG", 710: "ZA", 410: "KR", 724: "ES", 144: "LK", 752: "SE", 756: "CH", 158: "TW", 834: "TZ", 764: "TH", 788: "TN", 792: "TR", 804: "UA", 784: "AE", 826: "GB", 840: "US", 860: "UZ", 862: "VE", 704: "VN", 716: "ZW", 646: "RW", }; // ── FIPS → postal for US states ── var FIPS = { "01": "AL", "04": "AZ", "05": "AR", "06": "CA", "08": "CO", "09": "CT", 10: "DE", 11: "DC", 12: "FL", 13: "GA", 16: "ID", 17: "IL", 18: "IN", 19: "IA", 20: "KS", 21: "KY", 22: "LA", 23: "ME", 24: "MD", 25: "MA", 26: "MI", 27: "MN", 28: "MS", 29: "MO", 30: "MT", 31: "NE", 32: "NV", 33: "NH", 34: "NJ", 35: "NM", 36: "NY", 37: "NC", 38: "ND", 39: "OH", 40: "OK", 41: "OR", 42: "PA", 44: "RI", 45: "SC", 46: "SD", 47: "TN", 48: "TX", 49: "UT", 50: "VT", 51: "VA", 53: "WA", 54: "WV", 55: "WI", 56: "WY", }; var US_EXCLUDE = new Set(["Alaska", "Hawaii", "Puerto Rico", "Guam", "United States Virgin Islands", "American Samoa", "Commonwealth of the Northern Mariana Islands"]); // ── Synthetic respondent data ── var BY_COUNTRY = { US: { n: 27000, sentiment: 0.62 }, CA: { n: 2100, sentiment: 0.65 }, GB: { n: 2900, sentiment: 0.58 }, DE: { n: 1800, sentiment: 0.55 }, FR: { n: 1200, sentiment: 0.54 }, AU: { n: 1400, sentiment: 0.63 }, IN: { n: 2300, sentiment: 0.72 }, BR: { n: 1000, sentiment: 0.68 }, JP: { n: 780, sentiment: 0.48 }, KR: { n: 580, sentiment: 0.52 }, MX: { n: 520, sentiment: 0.6 }, IT: { n: 460, sentiment: 0.53 }, ES: { n: 420, sentiment: 0.56 }, NL: { n: 390, sentiment: 0.58 }, SE: { n: 330, sentiment: 0.6 }, CH: { n: 290, sentiment: 0.57 }, AT: { n: 260, sentiment: 0.55 }, PL: { n: 250, sentiment: 0.59 }, NO: { n: 230, sentiment: 0.62 }, DK: { n: 210, sentiment: 0.61 }, FI: { n: 200, sentiment: 0.63 }, IE: { n: 180, sentiment: 0.6 }, PT: { n: 160, sentiment: 0.54 }, BE: { n: 160, sentiment: 0.55 }, NZ: { n: 150, sentiment: 0.64 }, IL: { n: 140, sentiment: 0.5 }, RO: { n: 130, sentiment: 0.58 }, CZ: { n: 120, sentiment: 0.56 }, HU: { n: 120, sentiment: 0.54 }, GR: { n: 110, sentiment: 0.5 }, UA: { n: 100, sentiment: 0.48 }, TR: { n: 100, sentiment: 0.52 }, ZA: { n: 90, sentiment: 0.6 }, AR: { n: 80, sentiment: 0.62 }, CL: { n: 80, sentiment: 0.58 }, CO: { n: 70, sentiment: 0.63 }, PH: { n: 60, sentiment: 0.68 }, SG: { n: 60, sentiment: 0.65 }, MY: { n: 50, sentiment: 0.62 }, TH: { n: 50, sentiment: 0.64 }, ID: { n: 40, sentiment: 0.66 }, PK: { n: 30, sentiment: 0.58 }, NG: { n: 30, sentiment: 0.7 }, EG: { n: 30, sentiment: 0.55 }, KE: { n: 30, sentiment: 0.72 }, AL: { n: 20, sentiment: 0.6 }, RU: { n: 130, sentiment: 0.45 }, CN: { n: 100, sentiment: 0.58 }, TW: { n: 60, sentiment: 0.6 }, VN: { n: 40, sentiment: 0.65 }, AE: { n: 50, sentiment: 0.62 }, SA: { n: 50, sentiment: 0.55 }, JO: { n: 20, sentiment: 0.52 }, GT: { n: 20, sentiment: 0.58 }, MA: { n: 30, sentiment: 0.56 }, DZ: { n: 20, sentiment: 0.54 }, }; var BY_STATE = { CA: { n: 3280, sentiment: 0.6 }, TX: { n: 2460, sentiment: 0.58 }, FL: { n: 1910, sentiment: 0.56 }, NY: { n: 1640, sentiment: 0.62 }, PA: { n: 1090, sentiment: 0.55 }, IL: { n: 1090, sentiment: 0.58 }, OH: { n: 980, sentiment: 0.54 }, GA: { n: 900, sentiment: 0.57 }, NC: { n: 870, sentiment: 0.56 }, MI: { n: 820, sentiment: 0.55 }, NJ: { n: 770, sentiment: 0.59 }, VA: { n: 720, sentiment: 0.6 }, WA: { n: 660, sentiment: 0.63 }, AZ: { n: 620, sentiment: 0.57 }, MA: { n: 600, sentiment: 0.62 }, TN: { n: 570, sentiment: 0.53 }, IN: { n: 560, sentiment: 0.54 }, MO: { n: 510, sentiment: 0.53 }, MD: { n: 510, sentiment: 0.6 }, WI: { n: 480, sentiment: 0.55 }, CO: { n: 480, sentiment: 0.63 }, MN: { n: 470, sentiment: 0.59 }, SC: { n: 430, sentiment: 0.54 }, AL: { n: 400, sentiment: 0.52 }, LA: { n: 380, sentiment: 0.53 }, KY: { n: 360, sentiment: 0.52 }, OR: { n: 350, sentiment: 0.62 }, OK: { n: 330, sentiment: 0.52 }, CT: { n: 300, sentiment: 0.59 }, UT: { n: 270, sentiment: 0.58 }, IA: { n: 260, sentiment: 0.55 }, NV: { n: 260, sentiment: 0.57 }, AR: { n: 250, sentiment: 0.52 }, MS: { n: 250, sentiment: 0.51 }, KS: { n: 240, sentiment: 0.54 }, NM: { n: 170, sentiment: 0.56 }, NE: { n: 160, sentiment: 0.55 }, ID: { n: 160, sentiment: 0.56 }, WV: { n: 140, sentiment: 0.5 }, ME: { n: 120, sentiment: 0.58 }, NH: { n: 120, sentiment: 0.59 }, MT: { n: 90, sentiment: 0.56 }, RI: { n: 90, sentiment: 0.58 }, DE: { n: 80, sentiment: 0.58 }, SD: { n: 60, sentiment: 0.54 }, ND: { n: 60, sentiment: 0.55 }, VT: { n: 50, sentiment: 0.6 }, WY: { n: 50, sentiment: 0.54 }, DC: { n: 60, sentiment: 0.65 }, }; // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ // Projection engine // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ var _R = RADIUS; var _sinLat = 0, _cosLat = 1, _sinRoll = 0, _cosRoll = 1, _lon0 = 0; function setRotation(lon, lat, roll) { _lon0 = lon * DEG; var l = lat * DEG, r = roll * DEG; _sinLat = Math.sin(l); _cosLat = Math.cos(l); _sinRoll = Math.sin(r); _cosRoll = Math.cos(r); } function project(lon, lat) { var λ = lon * DEG - _lon0, φ = lat * DEG; var cosφ = Math.cos(φ), sinφ = Math.sin(φ); var cosλ = Math.cos(λ), sinλ = Math.sin(λ); var x = cosφ * cosλ, y = cosφ * sinλ, z = sinφ; var nx = x * _cosLat + z * _sinLat; var nz = -x * _sinLat + z * _cosLat; var ry = y * _cosRoll - nz * _sinRoll; var rz = y * _sinRoll + nz * _cosRoll; return [GLOBE_CX + _R * ry, GLOBE_CY - _R * rz, nx]; } function projectLine(coords, front) { var d = "", wasVis = false, prevPt = null; for (var i = 0; i < coords.length; i++) { var pt = project(coords[i][0], coords[i][1]); var vis = front ? pt[2] > 0.001 : pt[2] < -0.001; if (vis && !wasVis) { if (prevPt) { var t = -prevPt[2] / (pt[2] - prevPt[2]); var hx = prevPt[0] + (pt[0] - prevPt[0]) * t; var hy = prevPt[1] + (pt[1] - prevPt[1]) * t; d += "M" + hx.toFixed(1) + " " + hy.toFixed(1) + "L" + pt[0].toFixed(1) + " " + pt[1].toFixed(1); } else { d += "M" + pt[0].toFixed(1) + " " + pt[1].toFixed(1); } } else if (vis && wasVis) { d += "L" + pt[0].toFixed(1) + " " + pt[1].toFixed(1); } else if (!vis && wasVis && prevPt) { var t2 = -prevPt[2] / (pt[2] - prevPt[2]); d += "L" + (prevPt[0] + (pt[0] - prevPt[0]) * t2).toFixed(1) + " " + (prevPt[1] + (pt[1] - prevPt[1]) * t2).toFixed(1); } wasVis = vis; prevPt = pt; } return d; } function projectRing(coords) { var closed = coords[coords.length - 1][0] === coords[0][0] && coords[coords.length - 1][1] === coords[0][1]; var ring = closed ? coords : coords.concat([coords[0]]); return projectLine(ring, true); } function geoPath(geom) { if (!geom) return ""; var t = geom.type; if (t === "LineString") return projectLine(geom.coordinates, true); if (t === "MultiLineString") return geom.coordinates .map(function (c) { return projectLine(c, true); }) .join(""); if (t === "Polygon") return geom.coordinates.map(projectRing).join(""); if (t === "MultiPolygon") return geom.coordinates .map(function (p) { return p.map(projectRing).join(""); }) .join(""); if (t === "GeometryCollection") return geom.geometries.map(geoPath).join(""); return ""; } // ── Graticule ── var SAMPLE = 2; function makeMeridian(lon) { var pts = []; for (var lat = -90; lat <= 90; lat += SAMPLE) pts.push([lon, lat]); return pts; } function makeParallel(lat) { var pts = []; for (var lon = -180; lon <= 180; lon += SAMPLE) pts.push([lon, lat]); return pts; } function buildGraticules(step) { var lines = []; for (var lon = -180; lon < 180; lon += step) lines.push(makeMeridian(lon)); var pLat = Math.floor(85 / step) * step; for (var lat = -pLat; lat <= pLat; lat += step) lines.push(makeParallel(lat)); return lines; } var gridLines = buildGraticules(GRID_STEP); var boldLines = [makeParallel(0)]; // ── Label longitudes ── var labelLons = []; for (var ln = -180; ln < 180; ln += 30) labelLons.push(ln); // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ // Dot generation // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ function makeLcg(seed) { var s = seed >>> 0; return function () { s = (s * 1664525 + 1013904223) >>> 0; return (s >>> 0) / 0xffffffff; }; } function pointInRing(lon, lat, ring) { var inside = false; for (var i = 0, j = ring.length - 1; i < ring.length; j = i++) { var xi = ring[i][0], yi = ring[i][1], xj = ring[j][0], yj = ring[j][1]; if (yi > lat !== yj > lat && lon < ((xj - xi) * (lat - yi)) / (yj - yi) + xi) inside = !inside; } return inside; } function pointInGeom(lon, lat, geom) { if (geom.type === "Polygon") { return ( pointInRing(lon, lat, geom.coordinates[0]) && !geom.coordinates.slice(1).some(function (h) { return pointInRing(lon, lat, h); }) ); } if (geom.type === "MultiPolygon") { return geom.coordinates.some(function (poly) { return ( pointInRing(lon, lat, poly[0]) && !poly.slice(1).some(function (h) { return pointInRing(lon, lat, h); }) ); }); } return false; } function geomBounds(geom) { var minLon = Infinity, minLat = Infinity, maxLon = -Infinity, maxLat = -Infinity; function visit(c) { if (typeof c[0] === "number") { if (c[0] < minLon) minLon = c[0]; if (c[0] > maxLon) maxLon = c[0]; if (c[1] < minLat) minLat = c[1]; if (c[1] > maxLat) maxLat = c[1]; } else c.forEach(visit); } visit(geom.coordinates); return [minLon, minLat, maxLon, maxLat]; } function sampleInGeom(geom, count, rng) { var b = geomBounds(geom); var pts = [], max = count * 60; for (var i = 0; pts.length < count && i < max; i++) { var lon = b[0] + rng() * (b[2] - b[0]); var sinMin = Math.sin(b[1] * DEG), sinMax = Math.sin(b[3] * DEG); var lat = Math.asin(sinMin + rng() * (sinMax - sinMin)) / DEG; if (pointInGeom(lon, lat, geom)) pts.push([lon, lat]); } return pts; } // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ // Globe state // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ var countryMesh = null; var countryFeatures = null; var stateMesh = null; var dots = null; var dotCountries = null; var hoverRegions = null; var rotation = [0, SF_IDLE_TILT, SF_IDLE_ROLL]; var countriesReady = false; // ── DOM refs ── var $frontGrid = document.getElementById("front-grid"); var $boldGrid = document.getElementById("bold-grid"); var $backGrid = document.getElementById("back-grid"); var $countries = document.getElementById("countries"); var $countryFill = document.getElementById("country-fill"); var $states = document.getElementById("states"); var $hoverOutline = document.getElementById("hover-outline"); var $focusOutline = document.getElementById("focus-outline"); var $glow = document.getElementById("glow"); var $glowClipPath = document.getElementById("glow-clip-path"); var $dotsDim = document.getElementById("dots-dim"); var $dotsFade = document.getElementById("dots-fade"); var $dotsMain = document.getElementById("dots-main"); var $dotsGreen = document.getElementById("dots-green"); var $dotsBlue = document.getElementById("dots-blue"); var $dotsGreenP = document.getElementById("dots-green-pulse"); var $dotsBlueP = document.getElementById("dots-blue-pulse"); var $labels = document.getElementById("labels"); var $quoteText = document.getElementById("quote-text"); var $countryLabel = document.getElementById("country-label"); var $stepDotsWrap = document.getElementById("step-dots"); // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ // Render // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ function renderLabels() {} var currentFocusISO = null; var focusRegion = null; function render(focusIdx, prevFocusIdx, focusAlpha) { _R = RADIUS; setRotation(rotation[0], rotation[1], rotation[2]); $frontGrid.setAttribute( "d", gridLines .map(function (l) { return projectLine(l, true); }) .join(""), ); $boldGrid.setAttribute( "d", boldLines .map(function (l) { return projectLine(l, true); }) .join(""), ); $backGrid.setAttribute("d", ""); if (countryMesh) { $countries.setAttribute("d", geoPath(countryMesh)); } if (stateMesh) { $states.setAttribute("d", geoPath(stateMesh)); } // Focus outline + glow if (focusRegion) { var fd = ""; for (var ri = 0; ri < focusRegion.rings.length; ri++) fd += projectRing(focusRegion.rings[ri]); $focusOutline.setAttribute("d", fd); $focusOutline.setAttribute("stroke-opacity", String(focusAlpha)); $glow.setAttribute("d", fd); $glow.setAttribute("stroke-opacity", String(focusAlpha * 0.25)); if ($glowClipPath) $glowClipPath.setAttribute("d", fd); } else { $focusOutline.setAttribute("d", ""); $glow.setAttribute("d", ""); if ($glowClipPath) $glowClipPath.setAttribute("d", ""); } // Dots if (dots) { var dBase = "", dDim = "", dFade = ""; for (var i = 0; i < dots.length; i++) { var dot = dots[i]; var pt = project(dot[0], dot[1]); if (pt[2] <= 0) continue; var seg = "M" + pt[0].toFixed(1) + " " + pt[1].toFixed(1) + "h0"; var cIdx = dot[3]; if (focusIdx >= 0 && cIdx !== undefined) { dDim += seg; if (cIdx === focusIdx) dBase += seg; else if (cIdx === prevFocusIdx) dFade += seg; continue; } dDim += seg; } $dotsMain.setAttribute("d", dBase); $dotsDim.setAttribute("d", dDim); $dotsFade.setAttribute("d", dFade); $dotsMain.setAttribute("stroke-opacity", String(0.8 * focusAlpha)); $dotsFade.setAttribute("stroke-opacity", String(0.8 * (1 - focusAlpha))); } renderLabels(); } // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ // Typewriter // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ var twTimer = null; var twCode = null; var typewriterDone = true; function typewrite(text) { if (twTimer) { clearTimeout(twTimer); twTimer = null; } typewriterDone = false; $quoteText.innerHTML = '<span class="sf-tw-cursor sf-blinking"></span>'; twTimer = setTimeout(function () { $quoteText.innerHTML = '\u201c<span id="sf-tw-text"></span><span class="sf-tw-cursor sf-blinking"></span>'; var span = document.getElementById("sf-tw-text"); if (!span) return; var i = 0; function tick() { if (i >= text.length) { typewriterDone = true; return; } span.textContent += text[i++]; twTimer = setTimeout(tick, 15); } tick(); }, 1800); } function clearTypewriter() { if (twTimer) { clearTimeout(twTimer); twTimer = null; } twCode = null; typewriterDone = true; $quoteText.innerHTML = ""; } // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ // Step dots UI // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ var stepDotEls = []; function buildStepDots() { $stepDotsWrap.innerHTML = ""; stepDotEls = []; for (var i = 0; i < STEPS.length; i++) { var dot = document.createElement("div"); dot.className = "step-dot"; dot.dataset.idx = String(i); dot.addEventListener("click", function (e) { jumpToStep(parseInt(e.target.dataset.idx, 10)); }); $stepDotsWrap.appendChild(dot); stepDotEls.push(dot); } } buildStepDots(); function updateStepDotActive(idx) { for (var i = 0; i < stepDotEls.length; i++) { if (i === idx) stepDotEls[i].classList.add("active"); else stepDotEls[i].classList.remove("active"); } } // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ // Animation loop (Phase 1) // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ var sfLerp = function (a, b, t) { return a + (b - a) * t; }; var sfEase = function (t) { return t < 0.5 ? 2 * t * t : 1 - Math.pow(-2 * t + 2, 2) / 2; }; var sfClamp = function (x, a, b) { return Math.max(a, Math.min(b, x)); }; function sfLonDelta(from, to) { return ((((to - from) % 360) + 540) % 360) - 180; } var focusIndices = {}; var TILT_OFF = 1.6; var targets = STEPS.map(function (s) { var c = CENTROIDS[s.code] || [0, 0]; return [c[0], c[1] + TILT_OFF]; }); var curLon = targets[0][0]; var curLat = targets[0][1]; var curMix = 1; var virtual = 0; var autoStart = null; var autoOffset = 0; var lastRenderedStep = -1; var stepIdx = -1; var prevStepIdx = -1; var lastTypingDone = true; var manualJump = false; var EASE = 0.06; var animReady = false; function jumpToStep(i) { virtual = i * SF_SCROLL_PER_STEP; autoStart = null; typewriterDone = true; manualJump = true; } function loop(ts) { if (!animReady) { requestAnimationFrame(loop); return; } if (autoStart === null) { autoStart = ts; autoOffset = virtual; } var wasManualJump = manualJump; if (wasManualJump) manualJump = false; // Hold at current step while typewriter is running if (!typewriterDone) { autoStart = ts; autoOffset = virtual; } else if (!lastTypingDone && !wasManualJump) { // Typing just finished — skip virtual past dwell so globe starts moving after 800ms var postDwellMs = 800; var skipFrac = Math.max(0, SF_DWELL - postDwellMs / SF_STEP_DUR); autoOffset = lastRenderedStep * SF_SCROLL_PER_STEP + skipFrac * SF_SCROLL_PER_STEP; autoStart = ts; virtual = autoOffset; } if (wasManualJump) lastTypingDone = true; else lastTypingDone = typewriterDone; virtual = autoOffset + ((ts - autoStart) / SF_STEP_DUR) * SF_SCROLL_PER_STEP; var totalVirtual = STEPS.length * SF_SCROLL_PER_STEP; virtual = ((virtual % totalVirtual) + totalVirtual) % totalVirtual; var stepFloat = virtual / SF_SCROLL_PER_STEP; var i = sfClamp(Math.floor(stepFloat), 0, STEPS.length - 1); var j = (i + 1) % STEPS.length; var frac = sfClamp(stepFloat - i, 0, 1); var t = sfEase(Math.max(0, (frac - SF_DWELL) / (1 - SF_DWELL))); var lon0 = targets[i][0], lat0 = targets[i][1]; var lon1 = targets[j][0], lat1 = targets[j][1]; var wantLon = lon0 + sfLonDelta(lon0, lon1) * t; var wantLat = sfLerp(lat0, lat1, t); if (i !== lastRenderedStep) { var prev = lastRenderedStep; lastRenderedStep = i; if (prev >= 0) curMix = 0; prevStepIdx = prev; stepIdx = i; // Update UI updateStepDotActive(i); var step = STEPS[i]; $countryLabel.innerHTML = '<span class="hl-yellow">' + step.label + "</span>"; // Trigger typewriter if (twCode !== step.code) { twCode = step.code; typewrite(step.quote); } // Update focus region currentFocusISO = step.code; focusRegion = null; if (hoverRegions) { for (var r = 0; r < hoverRegions.length; r++) { if (hoverRegions[r].key === step.code) { focusRegion = hoverRegions[r]; break; } } } } // Ease rotation curLon += sfLonDelta(curLon, wantLon) * EASE; curLat += (wantLat - curLat) * EASE; rotation[0] = curLon; rotation[1] = curLat; rotation[2] = SF_IDLE_ROLL; // Focus crossfade curMix += (1 - curMix) * (EASE * 1.5); var currentFocusIdx = stepIdx >= 0 ? (focusIndices[STEPS[stepIdx].code] !== undefined ? focusIndices[STEPS[stepIdx].code] : -1) : -1; var prevFocusIdxVal = prevStepIdx >= 0 && STEPS[prevStepIdx] ? (focusIndices[STEPS[prevStepIdx].code] !== undefined ? focusIndices[STEPS[prevStepIdx].code] : -1) : -1; render(currentFocusIdx, prevFocusIdxVal, curMix); requestAnimationFrame(loop); } // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ // Data loading // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ var WORLD_URL = "https://cdn.prod.website-files.com/67ce28cfec624e2b733f8a52/69bad657e55cf57c0c2b1c89_countries-110m%202.txt"; var US_STATES_URL = "https://cdn.prod.website-files.com/67ce28cfec624e2b733f8a52/69bad6578b4b6af7746b9171_states-10m%202.txt"; function init() { // Kick off animation loop immediately (it will wait for animReady) requestAnimationFrame(loop); // Load world + US states in parallel Promise.all([ fetch(WORLD_URL).then(function (r) { return r.json(); }), fetch(US_STATES_URL).then(function (r) { return r.json(); }), ]).then(function (results) { var world = results[0]; var usTopo = results[1]; // Parse world var worldObj = world.objects.countries || world.objects[Object.keys(world.objects)[0]]; countryMesh = topojson.mesh(world, worldObj); var features = topojson.feature(world, worldObj).features; countryFeatures = features; // Build feature map by ISO alpha-2 var featureMap = {}; features.forEach(function (f) { var numId = String(f.id).padStart(3, "0"); var iso = ISO_NUM[numId]; if (iso) { f._iso = iso; featureMap[iso] = f; } }); // Parse US states var stObj = usTopo.objects.states || usTopo.objects[Object.keys(usTopo.objects)[0]]; stateMesh = topojson.mesh(usTopo, stObj); var stateFeatures = topojson.feature(usTopo, stObj).features; // Build hover regions var regions = []; var byCountry = BY_COUNTRY; features.forEach(function (f) { if (!f.geometry || !f._iso) return; var entry = byCountry[f._iso]; if (!entry) return; var rings = []; var g = f.geometry; if (g.type === "Polygon") rings.push(g.coordinates[0]); else if (g.type === "MultiPolygon") g.coordinates.forEach(function (poly) { rings.push(poly[0]); }); if (!rings.length) return; regions.push({ key: f._iso, name: COUNTRY_NAMES[f._iso] || f.properties.name || f._iso, n: entry.n, rings: rings, }); }); hoverRegions = regions; // Generate dots var isoList = Object.keys(byCountry); var allDots = []; // Non-US countries isoList.forEach(function (iso, countryIdx) { if (iso === "US") return; var r = byCountry[iso]; if (!r || !r.n || r.sentiment == null) return; var feature = featureMap[iso]; if (!feature || !feature.geometry) return; var targetDots = Math.max(1, Math.round(r.n / 4)); var nGreen = Math.round(r.sentiment * targetDots); var nBlue = targetDots - nGreen; var seed = iso .toLowerCase() .split("") .reduce(function (s, c) { return (s * 31 + c.charCodeAt(0)) & 0xffffffff; }, 0); var rng = makeLcg(seed); sampleInGeom(feature.geometry, nGreen, rng).forEach(function (pt) { allDots.push([pt[0], pt[1], 0, countryIdx]); }); sampleInGeom(feature.geometry, nBlue, rng).forEach(function (pt) { allDots.push([pt[0], pt[1], 1, countryIdx]); }); }); // US: per state var usIdx = isoList.indexOf("US"); stateFeatures.forEach(function (sf) { var fips = String(sf.id).padStart(2, "0"); var postal = FIPS[fips]; if (!postal) return; if (US_EXCLUDE.has(sf.properties && sf.properties.name)) return; var stateInfo = BY_STATE[postal]; if (!stateInfo || !stateInfo.n || stateInfo.sentiment == null) return; var targetDots = Math.max(1, Math.round(stateInfo.n / 4)); var nGreen = Math.round(stateInfo.sentiment * targetDots); var nBlue = targetDots - nGreen; var seed = postal .toLowerCase() .split("") .reduce(function (s, c) { return (s * 31 + c.charCodeAt(0)) & 0xffffffff; }, 0); var rng = makeLcg(seed); sampleInGeom(sf.geometry, nGreen, rng).forEach(function (pt) { allDots.push([pt[0], pt[1], 0, usIdx]); }); sampleInGeom(sf.geometry, nBlue, rng).forEach(function (pt) { allDots.push([pt[0], pt[1], 1, usIdx]); }); }); dots = allDots; dotCountries = isoList; // Build focus indices STEPS.forEach(function (s) { focusIndices[s.code] = isoList.indexOf(s.code); }); // Show countries countriesReady = true; $countries.style.opacity = "1"; $states.style.opacity = "1"; // Re-set focus region for current step now that hoverRegions are available if (stepIdx >= 0 && STEPS[stepIdx]) { currentFocusISO = STEPS[stepIdx].code; focusRegion = null; for (var fr = 0; fr < hoverRegions.length; fr++) { if (hoverRegions[fr].key === currentFocusISO) { focusRegion = hoverRegions[fr]; break; } } } // Prime rotation and start curLon = targets[0][0]; curLat = targets[0][1]; animReady = true; }); } init(); })(); Latest releasesExpanding Project GlasswingWe’re extending Project Glasswing to approximately 150 new organizations in more than fifteen countries.DateJune 2, 2026CategoryAnnouncementsRead announcementRead announcementRead announcementClaude Opus 4.8An upgrade to Opus across coding, agentic tasks, and professional work, with the consistency to handle long-running work.Model detailsModel detailsModel detailsDateMay 28, 2026CategoryAnnouncementsRead announcementRead announcementRead announcementIntroducing The Anthropic InstituteWe’re launching The Anthropic Institute, a new effort to confront the most significant challenges that powerful AI will pose to our societies.DateMarch 11, 2026CategoryAnnouncementsRead announcementRead announcementRead announcementAt Anthropic, we build AI to serve humanity’s long-term well-being.‍Core views on AI safetyAnnouncementsAnthropic’s Responsible Scaling PolicyAlignment ScienceAnthropic Academy: Build and Learn with ClaudeEducationAnthropic’s Economic IndexEconomic ResearchClaude’s ConstitutionAnnouncementsFooter© 2025 Anthropic PBCProductsClaudeClaude CodeClaude Code for EnterpriseClaude Cowork@ClaudeClaude DesignClaude SecurityClaude for ChromeClaude for SlackClaude for Microsoft 365SkillsMax planTeam planEnterprise planDownload appPricingLog in to ClaudeModelsMythosFableOpusSonnetHaikuSolutionsAI agentsCode modernizationCodingCustomer supportEducationFinancial servicesGovernmentHealthcareLegalLife sciencesNonprofitsSecuritySmall businessClaude PlatformOverviewDeveloper docsPricingEcosystemMarketplaceRegional complianceClaude on AWSGoogle CloudMicrosoft FoundryConsole loginResourcesBlogClaude partner networkCommunityConnectorsCoursesCustomer storiesEngineering at AnthropicEventsInside Claude CodeInside Claude CoworkInside Claude EnterprisePluginsPowered by ClaudeService partnersStartups programTutorialsUse casesHelp and securityAvailabilityStatusSupport centerCompanyAnthropicCareersPolicyEconomic FuturesResearchNewsClaude's ConstitutionClaude CorpsPolicy on the AI ExponentialResponsible Scaling PolicySecurity and complianceTransparencyTerms and policiesPrivacy choices /* Dialog styling */ dialog#consent-container { margin: 0; padding: 8px; opacity: 0; transform: translateY(16px); transition: opacity 0.3s ease-out, transform 0.3s ease-out; } dialog#consent-container.show { opacity: 1; transform: translateY(0); } dialog#consent-container::backdrop { background: transparent; } dialog button span { display: inline !important; } /* Toggle switch styling */ .toggle_switch { position: relative; display: inline-block; width: 36px; height: 24px; } .toggle_switch input { opacity: 0; width: 0; height: 0; } .toggle_slider { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background-color: #87867f; transition: .4s; border-radius: 24px; } .toggle_slider:before { position: absolute; content: ""; height: 18px; width: 18px; left: 3px; bottom: 3px; background-color: white; transition: .4s; border-radius: 50%; } input:checked + .toggle_slider { background-color: #d97757; } input:checked + .toggle_slider:before { transform: translateX(12px); } input:disabled + .toggle_slider { cursor: not-allowed; opacity: 0.5; } @media only screen and (max-width: 501px) { dialog#consent-container { left: 8px !important; bottom: 8px !important; right: 8px !important; } #consent-banner { padding: 24px 16px 16px !important; } #simple-options { grid-template-columns: repeat(3, 1fr) !important; grid-template-rows: auto auto !important; } #customize-btn { grid-column: span 1 !important; } dialog button span { display: none !important; } Cookie Settings We use cookies to deliver and improve our services, analyze site usage, and if you agree, to customize or personalize your experience and market our services to you. You can read our Cookie Policy here. Customize cookie settings Reject all cookies Accept all cookies Necessary Enables security and basic functionality. Required Analytics Enables tracking of site performance. Off Marketing Enables ads personalization and tracking. Off Save preferences Privacy policyConsumer health data privacy policyResponsible disclosure policyTerms of service: CommercialTerms of service: ConsumerUsage policy© 2024 Anthropic PBC document.addEventListener("DOMContentLoaded", () => { const year = new Date().getFullYear(); document.querySelectorAll('[data-year="true"]').forEach(el => el.textContent = year); });

归纳

人工智能公司Anthropic近期在美国加州联邦法院遭遇版权侵权诉讼,原告指控其AI模型训练过程中未经授权使用受版权保护的文本数据。该案涉及《美国版权法》第101条等条款,目前法院已受理并进入证据开示阶段。Anthropic辩称其行为属于合理使用范畴,但原告主张大规模抓取受保护作品构成直接侵权。此案可能对AI训练数据的合法性产生重要影响。

点评

本案核心法律关切在于AI训练数据大规模抓取是否构成合理使用,将直接影响全球AI企业数据合规的司法标准。

AI 自动整理 · 未人工精选

法律视角点评

AI 生成 · 人工审核

核心关切

本案核心法律关切在于AI训练数据大规模抓取是否构成合理使用,将直接影响全球AI企业数据合规的司法标准。

实务启示

中国法律人应关注我国《著作权法》第24条合理使用条款在AI训练场景下的解释空间,并提前布局数据来源的授权合规。

查看原文
Anthropic面临AI版权诉讼新进展