[{"data":1,"prerenderedAt":8945},["ShallowReactive",2],{"article-\u002Fen\u002Fblog\u002Fcss-techniques-checklist\u002F":3,"article-alt-\u002Fen\u002Fblog\u002Fcss-techniques-checklist\u002F":2323,"article-related-\u002Fen\u002Fblog\u002Fcss-techniques-checklist\u002F":4362},{"id":4,"title":5,"body":6,"date":2303,"description":2304,"draft":2305,"extension":2306,"meta":2307,"navigation":2308,"ogImage":2309,"path":2310,"seo":2311,"stem":2312,"tags":2313,"translationKey":2320,"updatedAt":2321,"__hash__":2322},"blog_en\u002Fen\u002Fblog\u002Fcss-techniques-checklist.md","Modern CSS Techniques Cheat Sheet: 60+ Features, Support & What to Try Next",{"type":7,"value":8,"toc":2283},"minimark",[9,14,18,22,28,38,54,68,72,332,336,574,578,755,759,1068,1072,1205,1209,1315,1319,1488,1492,1651,1655,1803,1807,2047,2051,2054,2133,2137,2140,2199,2216,2220],[10,11,13],"h3",{"id":12},"intro","Intro",[15,16,17],"p",{},"This is my running checklist of modern CSS features—something I scan to decide which techniques to experiment with next. It's grouped by purpose (layout, selectors, color, typography, animation, forms, responsive, performance, functions & math), and each entry lists what it's for, an example, and browser support, plus whether I've already tried it.",[10,19,21],{"id":20},"legend","Legend",[15,23,24],{},[25,26,27],"strong",{},"Tried it",[29,30,31,35],"ul",{},[32,33,34],"li",{},"✅ = I've experimented with it",[32,36,37],{},"⬜ = Not yet",[15,39,40,43,44,53],{},[25,41,42],{},"Support status"," (as of July 2026; 🟠 \u002F 🔴 move fast—re-check ",[45,46,52],"a",{"href":47,"rel":48,"target":50,"title":51},"https:\u002F\u002Fcaniuse.com",[49],"nofollow","_blank","opens in new window","caniuse"," \u002F MDN before shipping)",[29,55,56,59,62,65],{},[32,57,58],{},"🟢 Stable — broadly available across major browsers, safe for production",[32,60,61],{},"🟡 Newer — supported in most browsers; add a fallback",[32,63,64],{},"🟠 Experimental — only some browsers \u002F behind a flag \u002F just landed in Chrome",[32,66,67],{},"🔴 Proposed — still at the proposal stage, not usable in browsers yet",[10,69,71],{"id":70},"a-layout","A. Layout",[73,74,75,97],"table",{},[76,77,78],"thead",{},[79,80,81,85,88,91,94],"tr",{},[82,83,84],"th",{},"Property \u002F Feature",[82,86,87],{},"Main use & when to use",[82,89,90],{},"Example",[82,92,93],{},"Support",[82,95,96],{},"Tried",[98,99,100,123,143,164,184,204,230,273,296],"tbody",{},[79,101,102,109,112,117,120],{},[103,104,105],"td",{},[106,107,108],"code",{},"grid-template-rows: masonry",[103,110,111],{},"Masonry (waterfall) layout without JS. WebKit proposes a rival \"grid-lanes\" approach; the spec is still being fought over",[103,113,114],{},[106,115,116],{},"grid-template-rows: masonry;",[103,118,119],{},"🟠",[103,121,122],{},"✅",[79,124,125,130,133,138,141],{},[103,126,127],{},[106,128,129],{},"subgrid",[103,131,132],{},"Lets a child grid inherit the parent's tracks and gaps, so alignment snaps to the parent's lines; great for aligning elements across cards",[103,134,135],{},[106,136,137],{},"grid-template-columns: subgrid;",[103,139,140],{},"🟢",[103,142,122],{},[79,144,145,148,151,160,162],{},[103,146,147],{},"Container Queries",[103,149,150],{},"Responsive design based on the container's size (not the screen)—the key to true componentization",[103,152,153,156,157],{},[106,154,155],{},"container-type: inline-size;"," + ",[106,158,159],{},"@container (width > 400px){}",[103,161,140],{},[103,163,122],{},[79,165,166,169,172,180,182],{},[103,167,168],{},"Anchor Positioning",[103,170,171],{},"Anchor one element's position to another (tooltip \u002F popover \u002F menu), replacing a lot of JS math",[103,173,174,156,177],{},[106,175,176],{},"anchor-name: --a;",[106,178,179],{},"top: anchor(--a bottom);",[103,181,119],{},[103,183,122],{},[79,185,186,191,194,199,201],{},[103,187,188],{},[106,189,190],{},"@position-try",[103,192,193],{},"Fallback for anchor positioning: auto-flip when there isn't enough room",[103,195,196],{},[106,197,198],{},"position-try-fallbacks: flip-block;",[103,200,119],{},[103,202,203],{},"⬜",[79,205,206,215,218,226,228],{},[103,207,208,211,212],{},[106,209,210],{},"reading-flow"," \u002F ",[106,213,214],{},"reading-order",[103,216,217],{},"When flex\u002Fgrid visual order is reordered, fix keyboard and screen-reader reading order (an accessibility must)",[103,219,220,211,223],{},[106,221,222],{},"reading-flow: flex-visual;",[106,224,225],{},"reading-order: 1;",[103,227,119],{},[103,229,122],{},[79,231,232,245,259,268,271],{},[103,233,234,235,211,238,211,241,244],{},"Gap Decorations (",[106,236,237],{},"row-rule",[106,239,240],{},"column-rule",[106,242,243],{},"rule",")",[103,246,247,248,251,252,251,255,258],{},"Draw and style separators directly in grid\u002Fflex gaps—no more divider elements; plus fine-grain ",[106,249,250],{},"rule-inset","\u002F",[106,253,254],{},"rule-overlap",[106,256,257],{},"rule-visibility-items"," (Chrome\u002FEdge 149+)",[103,260,261,264,265],{},[106,262,263],{},"column-rule: 1px solid; row-rule: 1px solid;"," or shorthand ",[106,266,267],{},"rule: 1px solid;",[103,269,270],{},"🟡",[103,272,122],{},[79,274,275,280,287,292,294],{},[103,276,277],{},[106,278,279],{},"margin-inline",[103,281,282,283,286],{},"Logical property; set both inline-axis margins at once (often ",[106,284,285],{},"auto"," to center)",[103,288,289],{},[106,290,291],{},"margin-inline: auto;",[103,293,140],{},[103,295,122],{},[79,297,298,301,323,328,330],{},[103,299,300],{},"Two-value display",[103,302,303,304,307,308,311,312,315,316,311,319,322],{},"Write outer × inner display separately: ",[106,305,306],{},"display: block flex"," etc.; ",[106,309,310],{},"flex"," = ",[106,313,314],{},"block flex",", ",[106,317,318],{},"inline-flex",[106,320,321],{},"inline flex",". Clarifies display's two layers; single-value shorthands still fine day-to-day",[103,324,325],{},[106,326,327],{},"display: inline flex;",[103,329,270],{},[103,331,122],{},[10,333,335],{"id":334},"b-selectors","B. Selectors",[73,337,338,352],{},[76,339,340],{},[79,341,342,344,346,348,350],{},[82,343,84],{},[82,345,87],{},[82,347,90],{},[82,349,93],{},[82,351,96],{},[98,353,354,373,392,420,443,462,484,506,528,548],{},[79,355,356,361,364,369,371],{},[103,357,358],{},[106,359,360],{},":has()",[103,362,363],{},"The \"parent selector\" \u002F select by descendant or sibling state—a logic powerhouse",[103,365,366],{},[106,367,368],{},".card:has(img){}",[103,370,140],{},[103,372,122],{},[79,374,375,380,383,388,390],{},[103,376,377],{},[106,378,379],{},"::part()",[103,381,382],{},"Style a specific element inside a Web Component from the outside (needs Shadow DOM knowledge)",[103,384,385],{},[106,386,387],{},"my-el::part(label){}",[103,389,140],{},[103,391,122],{},[79,393,394,402,411,416,418],{},[103,395,396,211,399],{},[106,397,398],{},":is()",[106,400,401],{},":where()",[103,403,404,405,407,408,410],{},"Group selectors; ",[106,406,401],{}," has 0 specificity (lower than inline), ",[106,409,398],{}," takes its highest-specificity member",[103,412,413],{},[106,414,415],{},":is(h1,h2) :where(.x){}",[103,417,140],{},[103,419,122],{},[79,421,422,428,434,439,441],{},[103,423,424,427],{},[106,425,426],{},"nth-of"," syntax",[103,429,430,433],{},[106,431,432],{},":nth-child(An+B of S)","—count the nth item within a filtered subset",[103,435,436],{},[106,437,438],{},":nth-child(2 of .active){}",[103,440,140],{},[103,442,122],{},[79,444,445,450,453,458,460],{},[103,446,447],{},[106,448,449],{},":placeholder-shown",[103,451,452],{},"Style only while the placeholder is still showing (floating-label effect)",[103,454,455],{},[106,456,457],{},"input:placeholder-shown{}",[103,459,140],{},[103,461,122],{},[79,463,464,472,475,480,482],{},[103,465,466,211,469],{},[106,467,468],{},":in-range",[106,470,471],{},":out-of-range",[103,473,474],{},"Style form values inside\u002Foutside their min\u002Fmax range",[103,476,477],{},[106,478,479],{},"input:out-of-range{}",[103,481,140],{},[103,483,122],{},[79,485,486,494,497,502,504],{},[103,487,488,211,491],{},[106,489,490],{},":user-valid",[106,492,493],{},":user-invalid",[103,495,496],{},"Show validation state only after the user has interacted—no angry red on load",[103,498,499],{},[106,500,501],{},"input:user-invalid{}",[103,503,270],{},[103,505,122],{},[79,507,508,516,519,524,526],{},[103,509,510,211,513],{},[106,511,512],{},"sibling-index()",[106,514,515],{},"sibling-count()",[103,517,518],{},"Get an element's index and total among siblings; enables staggered animation, dynamic widths",[103,520,521],{},[106,522,523],{},"--i: sibling-index();",[103,525,119],{},[103,527,122],{},[79,529,530,535,538,543,546],{},[103,531,532],{},[106,533,534],{},":heading",[103,536,537],{},"Select all headings at once; still a proposal",[103,539,540],{},[106,541,542],{},":heading{}",[103,544,545],{},"🔴",[103,547,203],{},[79,549,550,553,565,570,572],{},[103,551,552],{},"Carousel selectors",[103,554,555,211,558,211,561,564],{},[106,556,557],{},"::scroll-marker",[106,559,560],{},"scroll-marker-group",[106,562,563],{},":target-current"," for native carousels and scrollspy",[103,566,567],{},[106,568,569],{},":target-current{}",[103,571,119],{},[103,573,203],{},[10,575,577],{"id":576},"c-color","C. Color",[73,579,580,594],{},[76,581,582],{},[79,583,584,586,588,590,592],{},[82,585,84],{},[82,587,87],{},[82,589,90],{},[82,591,93],{},[82,593,96],{},[98,595,596,627,649,668,687,710,735],{},[79,597,598,605,618,623,625],{},[103,599,600,601,604],{},"New color functions (",[106,602,603],{},"oklch","-first)",[103,606,607,610,611,613,614,617],{},[106,608,609],{},"hwb\u002Flab\u002Flch\u002Fcolor()"," for wider gamuts; I've settled on ",[106,612,603],{},", which supports the ",[106,615,616],{},"oklch(from …)"," relative syntax",[103,619,620],{},[106,621,622],{},"color: oklch(0.7 0.15 200 \u002F 50%);",[103,624,140],{},[103,626,122],{},[79,628,629,634,640,645,647],{},[103,630,631],{},[106,632,633],{},"color-mix()",[103,635,636,637,639],{},"Mix two colors (best done in ",[106,638,603],{}," space) for hover variants and transparent overlays",[103,641,642],{},[106,643,644],{},"color-mix(in oklch, red 40%, blue);",[103,646,140],{},[103,648,122],{},[79,650,651,656,659,664,666],{},[103,652,653],{},[106,654,655],{},"contrast-color()",[103,657,658],{},"Auto-pick a readable foreground color for a given background (compliance \u002F readability)",[103,660,661],{},[106,662,663],{},"color: contrast-color(var(--bg));",[103,665,119],{},[103,667,203],{},[79,669,670,675,678,683,685],{},[103,671,672],{},[106,673,674],{},"accent-color",[103,676,677],{},"One line to re-theme checkbox\u002Fradio\u002Frange and other system controls",[103,679,680],{},[106,681,682],{},"accent-color: rebeccapurple;",[103,684,140],{},[103,686,122],{},[79,688,689,694,701,706,708],{},[103,690,691],{},[106,692,693],{},"light-dark()",[103,695,696,697,700],{},"Give a property both a light and dark value at once; with ",[106,698,699],{},"color-scheme"," it skips the media query",[103,702,703],{},[106,704,705],{},"color: light-dark(#000, #fff);",[103,707,140],{},[103,709,122],{},[79,711,712,720,723,731,733],{},[103,713,714,211,717],{},[106,715,716],{},"font-palette",[106,718,719],{},"@font-palette-values",[103,721,722],{},"Custom palettes for color (COLR) fonts",[103,724,725,156,728],{},[106,726,727],{},"@font-palette-values --p{...}",[106,729,730],{},"font-palette: --p;",[103,732,270],{},[103,734,122],{},[79,736,737,740,746,751,753],{},[103,738,739],{},"Gradient interpolation color space",[103,741,742,745],{},[106,743,744],{},"linear-gradient(in oklch …)"," makes gradient transitions smoother and less muddy",[103,747,748],{},[106,749,750],{},"background: linear-gradient(in oklch, #4ba3f7, #9d2398);",[103,752,140],{},[103,754,122],{},[10,756,758],{"id":757},"d-typography","D. Typography",[73,760,761,775],{},[76,762,763],{},[79,764,765,767,769,771,773],{},[82,766,84],{},[82,768,87],{},[82,770,90],{},[82,772,93],{},[82,774,96],{},[98,776,777,805,824,843,862,881,900,919,938,968,987,1006,1026,1049],{},[79,778,779,787,796,801,803],{},[103,780,781,211,784],{},[106,782,783],{},"text-wrap: balance",[106,785,786],{},"pretty",[103,788,789,792,793,795],{},[106,790,791],{},"balance"," evens out heading line widths; ",[106,794,786],{}," avoids orphan words in body text (pretty is newer)",[103,797,798],{},[106,799,800],{},"text-wrap: balance;",[103,802,270],{},[103,804,122],{},[79,806,807,812,815,820,822],{},[103,808,809],{},[106,810,811],{},"text-decoration-skip-ink",[103,813,814],{},"Break the underline around descenders (g, y) for a cleaner look",[103,816,817],{},[106,818,819],{},"text-decoration-skip-ink: auto;",[103,821,140],{},[103,823,122],{},[79,825,826,831,834,839,841],{},[103,827,828],{},[106,829,830],{},"text-combine-upright",[103,832,833],{},"Lay numbers\u002FLatin horizontally within vertical text (\"tate-chu-yoko\"); common in CJK long-form",[103,835,836],{},[106,837,838],{},"text-combine-upright: all;",[103,840,270],{},[103,842,122],{},[79,844,845,850,853,858,860],{},[103,846,847],{},[106,848,849],{},"text-emphasis",[103,851,852],{},"Emphasis dots\u002Fcircles that track the character center; common CJK annotation",[103,854,855],{},[106,856,857],{},"text-emphasis: dot;",[103,859,140],{},[103,861,122],{},[79,863,864,869,872,877,879],{},[103,865,866],{},[106,867,868],{},"ruby-align",[103,870,871],{},"Alignment of ruby annotations (bopomofo \u002F pinyin, etc.)",[103,873,874],{},[106,875,876],{},"ruby-align: center;",[103,878,270],{},[103,880,122],{},[79,882,883,888,891,896,898],{},[103,884,885],{},[106,886,887],{},"paint-order",[103,889,890],{},"Control the paint order of text fill vs. stroke (for outlined text)",[103,892,893],{},[106,894,895],{},"paint-order: stroke fill;",[103,897,140],{},[103,899,122],{},[79,901,902,907,910,915,917],{},[103,903,904],{},[106,905,906],{},"box-decoration-break: clone",[103,908,909],{},"On line\u002Fpage breaks, apply border\u002Fradius\u002Fbackground to each fragment; especially nice for link focus",[103,911,912],{},[106,913,914],{},"box-decoration-break: clone;",[103,916,270],{},[103,918,122],{},[79,920,921,926,929,934,936],{},[103,922,923],{},[106,924,925],{},"text-box-trim",[103,927,928],{},"Trim the extra space above\u002Fbelow a font for precise vertical alignment",[103,930,931],{},[106,932,933],{},"text-box: trim-both cap alphabetic;",[103,935,119],{},[103,937,122],{},[79,939,940,949,955,964,966],{},[103,941,942,945,946,244],{},[106,943,944],{},"line-clamp"," (",[106,947,948],{},"-webkit-line-clamp",[103,950,951,952,954],{},"Show \"…\" after N lines; the new standard ",[106,953,944],{}," is gradually replacing the webkit form",[103,956,957,960,961,244],{},[106,958,959],{},"-webkit-line-clamp: 3;"," (needs ",[106,962,963],{},"-webkit-box",[103,965,140],{},[103,967,122],{},[79,969,970,975,978,983,985],{},[103,971,972],{},[106,973,974],{},"hanging-punctuation",[103,976,977],{},"Hang leading\u002Ftrailing punctuation outside the edge for tidier alignment (Safari-first)",[103,979,980],{},[106,981,982],{},"hanging-punctuation: first last;",[103,984,119],{},[103,986,203],{},[79,988,989,994,997,1002,1004],{},[103,990,991],{},[106,992,993],{},"font-variant-numeric: tabular-nums",[103,995,996],{},"Monospaced digits—essential for timers\u002Fprices\u002Fpercentages that jitter (font must support it)",[103,998,999],{},[106,1000,1001],{},"font-variant-numeric: tabular-nums;",[103,1003,140],{},[103,1005,122],{},[79,1007,1008,1014,1017,1022,1024],{},[103,1009,1010,1013],{},[106,1011,1012],{},"lh"," unit",[103,1015,1016],{},"Set margin\u002Fspacing in line-height units so they scale with font size",[103,1018,1019],{},[106,1020,1021],{},"margin-bottom: 1.5lh;",[103,1023,270],{},[103,1025,122],{},[79,1027,1028,1033,1040,1045,1047],{},[103,1029,1030],{},[106,1031,1032],{},"margin-trim",[103,1034,1035,1036,1039],{},"Trim margins of the first\u002Flast children in a container, avoiding ",[106,1037,1038],{},":first\u002F:last-child"," resets (Safari-first)",[103,1041,1042],{},[106,1043,1044],{},"margin-trim: block;",[103,1046,119],{},[103,1048,203],{},[79,1050,1051,1056,1059,1064,1066],{},[103,1052,1053],{},[106,1054,1055],{},"text-fit",[103,1057,1058],{},"Auto-scales font size so text exactly fills its container's width—responsive headlines without manual math or JS (new in Chrome 150)",[103,1060,1061],{},[106,1062,1063],{},"h1 { text-fit: auto; }",[103,1065,119],{},[103,1067,203],{},[10,1069,1071],{"id":1070},"e-animation-transition","E. Animation & Transition",[73,1073,1074,1088],{},[76,1075,1076],{},[79,1077,1078,1080,1082,1084,1086],{},[82,1079,84],{},[82,1081,87],{},[82,1083,90],{},[82,1085,93],{},[82,1087,96],{},[98,1089,1090,1110,1140,1163,1182],{},[79,1091,1092,1095,1101,1106,1108],{},[103,1093,1094],{},"Scroll-driven animation (formerly \"@scroll-timeline\")",[103,1096,1097,1098],{},"Drive animation by scroll progress instead of time; the spec is now ",[106,1099,1100],{},"animation-timeline: scroll()\u002Fview()",[103,1102,1103],{},[106,1104,1105],{},"animation-timeline: scroll();",[103,1107,119],{},[103,1109,122],{},[79,1111,1112,1120,1131,1136,1138],{},[103,1113,1114,211,1117],{},[106,1115,1116],{},"@view-transition",[106,1118,1119],{},"transition-behavior",[103,1121,1122,1123,1126,1127,1130],{},"Transitions for page\u002Fstate changes; ",[106,1124,1125],{},"allow-discrete"," lets discrete properties like ",[106,1128,1129],{},"display"," transition",[103,1132,1133],{},[106,1134,1135],{},"transition-behavior: allow-discrete;",[103,1137,270],{},[103,1139,122],{},[79,1141,1142,1147,1154,1159,1161],{},[103,1143,1144],{},[106,1145,1146],{},"@starting-style",[103,1148,1149,1150,1153],{},"Define an element's first-appearance start styles; enables ",[106,1151,1152],{},"display:none → shown"," entry animations",[103,1155,1156],{},[106,1157,1158],{},"@starting-style{ opacity:0; }",[103,1160,270],{},[103,1162,122],{},[79,1164,1165,1170,1173,1178,1180],{},[103,1166,1167],{},[106,1168,1169],{},"backface-visibility",[103,1171,1172],{},"Whether the back face shows during a 3D flip (card-flip effect)",[103,1174,1175],{},[106,1176,1177],{},"backface-visibility: hidden;",[103,1179,140],{},[103,1181,122],{},[79,1183,1184,1189,1196,1201,1203],{},[103,1185,1186],{},[106,1187,1188],{},"prefers-reduced-motion",[103,1190,1191,1192,1195],{},"Detect the reduced-motion preference, an accessibility must; pairs with ",[106,1193,1194],{},"prefers-color-scheme"," for light\u002Fdark",[103,1197,1198],{},[106,1199,1200],{},"@media (prefers-reduced-motion: reduce){}",[103,1202,140],{},[103,1204,122],{},[10,1206,1208],{"id":1207},"f-forms-components","F. Forms & Components",[73,1210,1211,1225],{},[76,1212,1213],{},[79,1214,1215,1217,1219,1221,1223],{},[82,1216,84],{},[82,1218,87],{},[82,1220,90],{},[82,1222,93],{},[82,1224,96],{},[98,1226,1227,1246,1269,1292],{},[79,1228,1229,1234,1237,1242,1244],{},[103,1230,1231],{},[106,1232,1233],{},"field-sizing: content",[103,1235,1236],{},"Let input\u002Ftextarea grow automatically to fit their content",[103,1238,1239],{},[106,1240,1241],{},"field-sizing: content;",[103,1243,119],{},[103,1245,122],{},[79,1247,1248,1257,1260,1265,1267],{},[103,1249,1250,1251,945,1254,244],{},"Customizable ",[106,1252,1253],{},"\u003Cselect>",[106,1255,1256],{},"appearance: base-select",[103,1258,1259],{},"Fully style the native dropdown; options can hold icons\u002FHTML",[103,1261,1262],{},[106,1263,1264],{},"select{ appearance: base-select; }",[103,1266,119],{},[103,1268,122],{},[79,1270,1271,1280,1283,1288,1290],{},[103,1272,1273,1276,1277,244],{},[106,1274,1275],{},"\u003Cselectlist>"," (formerly ",[106,1278,1279],{},"\u003Cselectmenu>",[103,1281,1282],{},"A highly customizable dropdown component; renamed and folded into the \"customizable select\" track",[103,1284,1285],{},[106,1286,1287],{},"\u003Cselectlist>…\u003C\u002Fselectlist>",[103,1289,119],{},[103,1291,122],{},[79,1293,1294,1299,1306,1311,1313],{},[103,1295,1296],{},[106,1297,1298],{},"::backdrop",[103,1300,1301,1302,1305],{},"Style the layer behind ",[106,1303,1304],{},"dialog.showModal()"," or fullscreen",[103,1307,1308],{},[106,1309,1310],{},"dialog::backdrop{}",[103,1312,140],{},[103,1314,122],{},[10,1316,1318],{"id":1317},"g-responsive-preferences","G. Responsive & Preferences",[73,1320,1321,1335],{},[76,1322,1323],{},[79,1324,1325,1327,1329,1331,1333],{},[82,1326,84],{},[82,1328,87],{},[82,1330,90],{},[82,1332,93],{},[82,1334,96],{},[98,1336,1337,1368,1386,1405,1424,1444,1464],{},[79,1338,1339,1342,1359,1364,1366],{},[103,1340,1341],{},"Media query range syntax",[103,1343,1344,1345,251,1348,1351,1352,156,1355,1358],{},"Write breakpoints with ",[106,1346,1347],{},"\u003C=",[106,1349,1350],{},">=",", skipping the ",[106,1353,1354],{},"min-width",[106,1356,1357],{},"320.01px"," pain",[103,1360,1361],{},[106,1362,1363],{},"@media (width >= 320px){}",[103,1365,140],{},[103,1367,122],{},[79,1369,1370,1374,1377,1382,1384],{},[103,1371,1372],{},[106,1373,1194],{},[103,1375,1376],{},"Detect dark\u002Flight theme preference",[103,1378,1379],{},[106,1380,1381],{},"@media (prefers-color-scheme: dark){}",[103,1383,140],{},[103,1385,122],{},[79,1387,1388,1393,1396,1401,1403],{},[103,1389,1390],{},[106,1391,1392],{},"prefers-contrast",[103,1394,1395],{},"Detect a request for more\u002Fless contrast",[103,1397,1398],{},[106,1399,1400],{},"@media (prefers-contrast: more){}",[103,1402,270],{},[103,1404,122],{},[79,1406,1407,1412,1415,1420,1422],{},[103,1408,1409],{},[106,1410,1411],{},"forced-colors",[103,1413,1414],{},"Adjust for high-contrast \u002F forced-colors mode (Windows High Contrast)",[103,1416,1417],{},[106,1418,1419],{},"@media (forced-colors: active){}",[103,1421,140],{},[103,1423,122],{},[79,1425,1426,1432,1435,1440,1442],{},[103,1427,1428,1431],{},[106,1429,1430],{},"resolution"," media",[103,1433,1434],{},"Switch by output device pixel density (e.g. Retina)",[103,1436,1437],{},[106,1438,1439],{},"@media (resolution >= 2dppx){}",[103,1441,140],{},[103,1443,122],{},[79,1445,1446,1452,1455,1460,1462],{},[103,1447,1448,1449],{},"Style Queries ",[106,1450,1451],{},"@container style()",[103,1453,1454],{},"Style by a container's custom-property value (e.g. theme); great for component variants",[103,1456,1457],{},[106,1458,1459],{},"@container style(--theme: dark){}",[103,1461,270],{},[103,1463,122],{},[79,1465,1466,1469,1479,1484,1486],{},[103,1467,1468],{},"Scroll-State Queries",[103,1470,1471,1472,315,1475,1478],{},"Style by a container's scroll state (e.g. ",[106,1473,1474],{},"stuck",[106,1476,1477],{},"snapped","); can detect whether a sticky element is stuck",[103,1480,1481],{},[106,1482,1483],{},"@container scroll-state(stuck: top){}",[103,1485,119],{},[103,1487,122],{},[10,1489,1491],{"id":1490},"h-encapsulation-performance","H. Encapsulation & Performance",[73,1493,1494,1508],{},[76,1495,1496],{},[79,1497,1498,1500,1502,1504,1506],{},[82,1499,84],{},[82,1501,87],{},[82,1503,90],{},[82,1505,93],{},[82,1507,96],{},[98,1509,1510,1530,1549,1568,1591,1610,1632],{},[79,1511,1512,1518,1521,1526,1528],{},[103,1513,1514,1515],{},"Cascade Layers ",[106,1516,1517],{},"@layer",[103,1519,1520],{},"Manage priority with layers to tame specificity in large projects",[103,1522,1523],{},[106,1524,1525],{},"@layer base, components, utilities;",[103,1527,140],{},[103,1529,122],{},[79,1531,1532,1537,1540,1545,1547],{},[103,1533,1534],{},[106,1535,1536],{},"@scope",[103,1538,1539],{},"Scope styles to a block with an optional lower bound, similar to CSS Modules scoping",[103,1541,1542],{},[106,1543,1544],{},"@scope (.card) to (.content){}",[103,1546,270],{},[103,1548,122],{},[79,1550,1551,1556,1559,1564,1566],{},[103,1552,1553],{},[106,1554,1555],{},"contain",[103,1557,1558],{},"Declare inner layout\u002Fstyle independence to isolate reflow and boost performance",[103,1560,1561],{},[106,1562,1563],{},"contain: layout style;",[103,1565,140],{},[103,1567,122],{},[79,1569,1570,1575,1582,1587,1589],{},[103,1571,1572],{},[106,1573,1574],{},"contain-intrinsic-size",[103,1576,1577,1578,1581],{},"With ",[106,1579,1580],{},"content-visibility: auto",", give an estimated size first to avoid scroll jumps; switches to auto once cached",[103,1583,1584],{},[106,1585,1586],{},"contain-intrinsic-size: auto 100px;",[103,1588,140],{},[103,1590,122],{},[79,1592,1593,1598,1601,1606,1608],{},[103,1594,1595],{},[106,1596,1597],{},"scrollbar-gutter: stable",[103,1599,1600],{},"Reserve the scrollbar gutter so content doesn't shift when the scrollbar appears",[103,1602,1603],{},[106,1604,1605],{},"scrollbar-gutter: stable;",[103,1607,270],{},[103,1609,122],{},[79,1611,1612,1620,1623,1628,1630],{},[103,1613,1614,211,1617],{},[106,1615,1616],{},"scrollbar-color",[106,1618,1619],{},"scrollbar-width",[103,1621,1622],{},"Customize scrollbar color and thickness",[103,1624,1625],{},[106,1626,1627],{},"scrollbar-color: #888 #eee;",[103,1629,270],{},[103,1631,122],{},[79,1633,1634,1639,1642,1647,1649],{},[103,1635,1636],{},[106,1637,1638],{},"@supports",[103,1640,1641],{},"Feature detection for progressive enhancement and fallbacks",[103,1643,1644],{},[106,1645,1646],{},"@supports (display: grid){}",[103,1648,140],{},[103,1650,122],{},[10,1652,1654],{"id":1653},"i-functions-math","I. Functions & Math",[73,1656,1657,1671],{},[76,1658,1659],{},[79,1660,1661,1663,1665,1667,1669],{},[82,1662,84],{},[82,1664,87],{},[82,1666,90],{},[82,1668,93],{},[82,1670,96],{},[98,1672,1673,1698,1718,1746,1765,1784],{},[79,1674,1675,1686,1689,1694,1696],{},[103,1676,1677,211,1680,211,1683],{},[106,1678,1679],{},"round()",[106,1681,1682],{},"mod()",[106,1684,1685],{},"rem()",[103,1687,1688],{},"Rounding and remainders in CSS, to align to a grid\u002Frhythm",[103,1690,1691],{},[106,1692,1693],{},"width: round(down, 15.5px, 4px);",[103,1695,270],{},[103,1697,122],{},[79,1699,1700,1706,1709,1714,1716],{},[103,1701,1702,1703],{},"Trig functions ",[106,1704,1705],{},"sin\u002Fcos\u002Ftan",[103,1707,1708],{},"Circular layouts, waveforms, angle math",[103,1710,1711],{},[106,1712,1713],{},"width: calc(sin(30deg) * 100px);",[103,1715,140],{},[103,1717,122],{},[79,1719,1720,1728,1737,1742,1744],{},[103,1721,1722,211,1725],{},[106,1723,1724],{},"calc-size()",[106,1726,1727],{},"interpolate-size",[103,1729,1730,1731,251,1733,1736],{},"Animate transitions to keywords like ",[106,1732,285],{},[106,1734,1735],{},"min-content",", e.g. an accordion expanding to an unknown height",[103,1738,1739],{},[106,1740,1741],{},"interpolate-size: allow-keywords;",[103,1743,119],{},[103,1745,122],{},[79,1747,1748,1753,1756,1761,1763],{},[103,1749,1750],{},[106,1751,1752],{},"random()",[103,1754,1755],{},"Native random values in CSS (scatter, jitter effects)",[103,1757,1758],{},[106,1759,1760],{},"rotate: random(-5deg, 5deg);",[103,1762,119],{},[103,1764,122],{},[79,1766,1767,1772,1775,1780,1782],{},[103,1768,1769],{},[106,1770,1771],{},"if()",[103,1773,1774],{},"Conditional logic inside a property value",[103,1776,1777],{},[106,1778,1779],{},"display: if(style(--open: 1): block; else: none);",[103,1781,119],{},[103,1783,203],{},[79,1785,1786,1791,1794,1799,1801],{},[103,1787,1788],{},[106,1789,1790],{},"@function",[103,1792,1793],{},"Custom CSS functions \u002F a mixin-like concept, with parameters and a return value",[103,1795,1796],{},[106,1797,1798],{},"@function --double(--x){ result: calc(var(--x)*2); }",[103,1800,119],{},[103,1802,203],{},[10,1804,1806],{"id":1805},"j-misc","J. Misc",[73,1808,1809,1823],{},[76,1810,1811],{},[79,1812,1813,1815,1817,1819,1821],{},[82,1814,84],{},[82,1816,87],{},[82,1818,90],{},[82,1820,93],{},[82,1822,96],{},[98,1824,1825,1842,1860,1879,1898,1924,1943,1976,2001,2025],{},[79,1826,1827,1830,1833,1838,1840],{},[103,1828,1829],{},"Native Nesting",[103,1831,1832],{},"Sass\u002FSCSS-style nesting without a preprocessor",[103,1834,1835],{},[106,1836,1837],{},".card{ & .title{} }",[103,1839,140],{},[103,1841,122],{},[79,1843,1844,1849,1852,1856,1858],{},[103,1845,1846],{},[106,1847,1848],{},"\u003Cimg loading=\"lazy\">",[103,1850,1851],{},"Lazy-load images to improve first-paint performance",[103,1853,1854],{},[106,1855,1848],{},[103,1857,140],{},[103,1859,122],{},[79,1861,1862,1867,1870,1875,1877],{},[103,1863,1864],{},[106,1865,1866],{},"overscroll-behavior: contain",[103,1868,1869],{},"Stop a scrolled-to-the-end block from scrolling the outer container (common for modals\u002Fsidebars)",[103,1871,1872],{},[106,1873,1874],{},"overscroll-behavior: contain;",[103,1876,140],{},[103,1878,122],{},[79,1880,1881,1886,1889,1894,1896],{},[103,1882,1883],{},[106,1884,1885],{},"object-view-box",[103,1887,1888],{},"Crop a region of an image directly in CSS, no separate cropped file needed",[103,1890,1891],{},[106,1892,1893],{},"object-view-box: inset(10% 10% 10% 10%);",[103,1895,119],{},[103,1897,122],{},[79,1899,1900,1903,1915,1920,1922],{},[103,1901,1902],{},"Individual transform properties",[103,1904,1905,251,1908,251,1911,1914],{},[106,1906,1907],{},"translate",[106,1909,1910],{},"rotate",[106,1912,1913],{},"scale"," as their own properties, easier to animate separately",[103,1916,1917],{},[106,1918,1919],{},"rotate: 45deg; scale: 1.2;",[103,1921,140],{},[103,1923,122],{},[79,1925,1926,1931,1934,1939,1941],{},[103,1927,1928],{},[106,1929,1930],{},"border-image",[103,1932,1933],{},"Complex borders from a sliced image, avoiding traditional slicing",[103,1935,1936],{},[106,1937,1938],{},"border-image: url(frame.png) 30 round;",[103,1940,140],{},[103,1942,122],{},[79,1944,1945,1950,1967,1972,1974],{},[103,1946,1947],{},[106,1948,1949],{},"background-clip: border-area",[103,1951,1952,1953,251,1956,1959,1960,1963,1964,1966],{},"Clips the background to the area painted by the border strokes (respecting ",[106,1954,1955],{},"border-width",[106,1957,1958],{},"border-style",", ignoring ",[106,1961,1962],{},"border-color"," transparency), so gradient borders work natively instead of via ",[106,1965,1930],{}," workarounds (new in Chrome 150)",[103,1968,1969],{},[106,1970,1971],{},"border: 3px solid transparent; background: linear-gradient(45deg, red, blue); background-clip: border-area;",[103,1973,119],{},[103,1975,203],{},[79,1977,1978,1983,1992,1997,1999],{},[103,1979,1980],{},[106,1981,1982],{},"corner-shape",[103,1984,1985,1986,1989,1990],{},"Corner shapes beyond ",[106,1987,1988],{},"border-radius"," (squircle \u002F notched, etc.), used together with ",[106,1991,1988],{},[103,1993,1994],{},[106,1995,1996],{},"corner-shape: squircle; border-radius: 30px;",[103,1998,119],{},[103,2000,203],{},[79,2002,2003,2009,2012,2021,2023],{},[103,2004,2005,2006,244],{},"Font smoothing (",[106,2007,2008],{},"-webkit-font-smoothing",[103,2010,2011],{},"The key to non-harsh text in dark mode: on macOS, light text on a dark background looks bold and glowing due to subpixel antialiasing; grayscale antialiasing makes it thinner and gentler. Non-standard, works only on certain platforms",[103,2013,2014,2017,2018,244],{},[106,2015,2016],{},"-webkit-font-smoothing: antialiased;"," (+ ",[106,2019,2020],{},"-moz-osx-font-smoothing: grayscale;",[103,2022,270],{},[103,2024,122],{},[79,2026,2027,2035,2038,2043,2045],{},[103,2028,2029,211,2032],{},[106,2030,2031],{},"@when",[106,2033,2034],{},"@else",[103,2036,2037],{},"CSS if\u002Felse conditional blocks; still a proposal, unusable in any browser",[103,2039,2040],{},[106,2041,2042],{},"@when supports(...){} @else{}",[103,2044,545],{},[103,2046,122],{},[10,2048,2050],{"id":2049},"k-html-attributes-not-css-but-closely-tied-to-accessibility","K. HTML Attributes (Not CSS, but Closely Tied to Accessibility)",[15,2052,2053],{},"Strictly speaking this section isn't CSS, but it replaces a pile of hand-written JS keyboard logic with a declarative attribute and directly affects accessibility quality — so it belongs in the same checklist.",[73,2055,2056,2070],{},[76,2057,2058],{},[79,2059,2060,2062,2064,2066,2068],{},[82,2061,84],{},[82,2063,87],{},[82,2065,90],{},[82,2067,93],{},[82,2069,96],{},[98,2071,2072,2091],{},[79,2073,2074,2079,2082,2087,2089],{},[103,2075,2076],{},[106,2077,2078],{},"focusgroup",[103,2080,2081],{},"Declaratively gives composite widgets (toolbars, tab lists, menus) arrow-key navigation, a guaranteed tab stop, and last-focused memory — exactly the WAI-ARIA keyboard pattern you previously had to hand-roll with roving tabindex (new in Chrome 150)",[103,2083,2084],{},[106,2085,2086],{},"\u003Cdiv focusgroup>…\u003C\u002Fdiv>",[103,2088,119],{},[103,2090,203],{},[79,2092,2093,2102,2124,2129,2131],{},[103,2094,2095,2096,211,2099,244],{},"Invoker Commands (",[106,2097,2098],{},"command",[106,2100,2101],{},"commandfor",[103,2103,2104,2105,315,2108,315,2111,315,2114,315,2117,315,2120,2123],{},"Control a popover\u002Fdialog with declarative HTML buttons, no scripting. Landed stable: ",[106,2106,2107],{},"show-modal",[106,2109,2110],{},"close",[106,2112,2113],{},"request-close",[106,2115,2116],{},"toggle-popover",[106,2118,2119],{},"show-popover",[106,2121,2122],{},"hide-popover"," (Baseline 2025; more coming — media controls, copy text, etc.)",[103,2125,2126],{},[106,2127,2128],{},"\u003Cbutton command=\"show-modal\" commandfor=\"dlg\">Open\u003C\u002Fbutton>",[103,2130,270],{},[103,2132,203],{},[10,2134,2136],{"id":2135},"what-to-try-next-recommended","What to try next (recommended)",[15,2138,2139],{},"These are the ones I haven't checked off yet but are \"stable 🟢 and high ROI,\" so they're worth doing first:",[2141,2142,2143,2155,2164,2169,2176,2184,2192],"ol",{},[32,2144,2145,2147,2148,251,2150,251,2152,2154],{},[106,2146,279],{}," and the individual transform properties (",[106,2149,1907],{},[106,2151,1910],{},[106,2153,1913],{},")—an instant upgrade to everyday code.",[32,2156,2157,2159,2160,2163],{},[106,2158,426],{}," syntax (",[106,2161,2162],{},":nth-child(… of …)",")—a sharp tool for picking subsets.",[32,2165,2166,2168],{},[106,2167,993],{},"—add it to any number that jitters.",[32,2170,2171,2172,2175],{},"Gradient ",[106,2173,2174],{},"in oklch","—one line to make every gradient cleaner.",[32,2177,2178,2180,2181,2183],{},[106,2179,1411],{}," and ",[106,2182,1392],{},"—round out accessibility detection (I've already done reduced-motion \u002F color-scheme).",[32,2185,2186,2187,251,2189,2191],{},"Trig functions and ",[106,2188,1679],{},[106,2190,1682],{},"—handy for circular layouts or aligning to a rhythm.",[32,2193,2194,2180,2196,2198],{},[106,2195,1536],{},[106,2197,1597],{},"—style scoping and scrollbar-shift issues in large projects.",[2200,2201,2202],"blockquote",{},[15,2203,2204,2207,2208,2212,2213,2215],{},[25,2205,2206],{},"Note:"," Most items marked 🟠 \u002F 🔴 only landed in Chrome in 2025–2026 or are still proposals, and support changes every quarter. Before shipping to production, treat ",[45,2209,2211],{"href":47,"rel":2210,"target":50,"title":51},[49],"caniuse.com"," and MDN as the source of truth, and remember to add an ",[106,2214,1638],{}," fallback for new features.",[10,2217,2219],{"id":2218},"references","References",[29,2221,2222,2228,2235,2242,2249,2262,2276],{},[32,2223,2224],{},[45,2225,2227],{"href":47,"rel":2226,"target":50,"title":51},[49],"Can I use (browser support lookup)",[32,2229,2230],{},[45,2231,2234],{"href":2232,"rel":2233,"target":50,"title":51},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FCSS",[49],"MDN Web Docs — CSS",[32,2236,2237],{},[45,2238,2241],{"href":2239,"rel":2240,"target":50,"title":51},"https:\u002F\u002Fweb.dev\u002Flearn\u002Fcss",[49],"web.dev — Learn CSS",[32,2243,2244],{},[45,2245,2248],{"href":2246,"rel":2247,"target":50,"title":51},"https:\u002F\u002Fdeveloper.chrome.com\u002Ftag\u002Fcss",[49],"Chrome for Developers — CSS",[32,2250,2251],{},[45,2252,2255,2256,315,2258,315,2260,244],{"href":2253,"rel":2254,"target":50,"title":51},"https:\u002F\u002Fdeveloper.chrome.com\u002Fblog\u002Fnew-in-chrome-150",[49],"New in Chrome 150 (",[106,2257,1055],{},[106,2259,1949],{},[106,2261,2078],{},[32,2263,2264],{},[45,2265,2268,2269,251,2271,251,2273,2275],{"href":2266,"rel":2267,"target":50,"title":51},"https:\u002F\u002Fcss-tricks.com\u002Fcss-gap-decorations-now-available\u002F",[49],"CSS Gap Decorations Now Available (",[106,2270,237],{},[106,2272,240],{},[106,2274,243],{},", CSS-Tricks)",[32,2277,2278],{},[45,2279,2282],{"href":2280,"rel":2281,"target":50,"title":51},"https:\u002F\u002Fcss-tricks.com",[49],"CSS-Tricks",{"title":2284,"searchDepth":2285,"depth":2285,"links":2286},"",2,[2287,2289,2290,2291,2292,2293,2294,2295,2296,2297,2298,2299,2300,2301,2302],{"id":12,"depth":2288,"text":13},3,{"id":20,"depth":2288,"text":21},{"id":70,"depth":2288,"text":71},{"id":334,"depth":2288,"text":335},{"id":576,"depth":2288,"text":577},{"id":757,"depth":2288,"text":758},{"id":1070,"depth":2288,"text":1071},{"id":1207,"depth":2288,"text":1208},{"id":1317,"depth":2288,"text":1318},{"id":1490,"depth":2288,"text":1491},{"id":1653,"depth":2288,"text":1654},{"id":1805,"depth":2288,"text":1806},{"id":2049,"depth":2288,"text":2050},{"id":2135,"depth":2288,"text":2136},{"id":2218,"depth":2288,"text":2219},"2026-07-06","A scannable checklist of modern CSS techniques—grouped by layout, selectors, color, typography, animation and more—with each feature's purpose, example, and browser support, plus which ones to experiment with first.",false,"md",{},true,null,"\u002Fen\u002Fblog\u002Fcss-techniques-checklist",{"title":5,"description":2304},"en\u002Fblog\u002Fcss-techniques-checklist",[2314,2315,2316,2317,2318,2319],"CSS","Front-End","Web Development","Responsive Design","Accessibility","Browser Support","css-techniques-checklist","2026-08-21","xF7LMqH5faICivF_K42XTpE6ll9QSVOeZnuOh-rxobs",{"id":2324,"title":2325,"body":2326,"date":2303,"description":4350,"draft":2305,"extension":2306,"meta":4351,"navigation":2308,"ogImage":2309,"path":4352,"seo":4353,"stem":4354,"tags":4355,"translationKey":2320,"updatedAt":2321,"__hash__":4361},"blog_zh\u002Fzh\u002Fblog\u002Fcss-techniques-checklist.md","現代 CSS 技巧整理清單：60+ 特性、支援度與實驗優先序",{"type":7,"value":2327,"toc":4333},[2328,2331,2334,2337,2342,2350,2361,2375,2379,2591,2595,2805,2809,2967,2971,3247,3251,3370,3374,3468,3472,3622,3626,3768,3772,3904,3908,4123,4127,4130,4199,4202,4205,4261,4276,4279],[10,2329,2330],{"id":2330},"前言",[15,2332,2333],{},"這是我自己在追蹤的現代 CSS 特性清單——用來快速掃描、決定接下來要補實驗哪些技巧。依用途分成版面、選擇器、色彩、文字排版、動畫、表單、響應式、封裝效能、函式數學等類別，每一條列出用途、範例與瀏覽器支援度，並標記我是否已經實驗過。",[10,2335,2336],{"id":2336},"圖例說明",[15,2338,2339],{},[25,2340,2341],{},"已實驗",[29,2343,2344,2347],{},[32,2345,2346],{},"✅ = 我已實驗過",[32,2348,2349],{},"⬜ = 尚未實驗",[15,2351,2352,2355,2356,2360],{},[25,2353,2354],{},"支援狀態","（截至 2026 年 7 月，🟠 \u002F 🔴 者變動快，上線前請再查 ",[45,2357,52],{"href":47,"rel":2358,"target":50,"title":2359},[49],"另開新視窗"," \u002F MDN）",[29,2362,2363,2366,2369,2372],{},[32,2364,2365],{},"🟢 穩定 — 主流瀏覽器普遍可用，可放心進 production",[32,2367,2368],{},"🟡 較新 — 多數瀏覽器已支援，建議加 fallback",[32,2370,2371],{},"🟠 實驗性 — 僅部分瀏覽器 \u002F 需開旗標 \u002F 剛上 Chrome",[32,2373,2374],{},"🔴 提案中 — 規格仍在提案階段，目前無法在瀏覽器使用",[10,2376,2378],{"id":2377},"a-版面配置layout","A. 版面配置（Layout）",[73,2380,2381,2399],{},[76,2382,2383],{},[79,2384,2385,2388,2391,2394,2397],{},[82,2386,2387],{},"屬性 \u002F 功能",[82,2389,2390],{},"主要用途與使用時機",[82,2392,2393],{},"範例",[82,2395,2396],{},"支援",[82,2398,2341],{},[98,2400,2401,2418,2435,2452,2469,2486,2507,2541,2561],{},[79,2402,2403,2407,2410,2414,2416],{},[103,2404,2405],{},[106,2406,108],{},[103,2408,2409],{},"磚牆式（瀑布流）排版，不用 JS。WebKit 另提「grid-lanes」對案，規格仍在拉鋸",[103,2411,2412],{},[106,2413,116],{},[103,2415,119],{},[103,2417,122],{},[79,2419,2420,2424,2427,2431,2433],{},[103,2421,2422],{},[106,2423,129],{},[103,2425,2426],{},"讓子網格繼承外層 grid 的軌道與 gap，對齊點變成外層基準；卡片內元素跨卡對齊超好用",[103,2428,2429],{},[106,2430,137],{},[103,2432,140],{},[103,2434,122],{},[79,2436,2437,2439,2442,2448,2450],{},[103,2438,147],{},[103,2440,2441],{},"依「容器」大小做 RWD（而非螢幕），元件化的關鍵",[103,2443,2444,156,2446],{},[106,2445,155],{},[106,2447,159],{},[103,2449,140],{},[103,2451,122],{},[79,2453,2454,2456,2459,2465,2467],{},[103,2455,168],{},[103,2457,2458],{},"讓元素錨定到另一元素定位（tooltip \u002F popover \u002F 選單），取代大量 JS 計算",[103,2460,2461,156,2463],{},[106,2462,176],{},[106,2464,179],{},[103,2466,119],{},[103,2468,122],{},[79,2470,2471,2475,2478,2482,2484],{},[103,2472,2473],{},[106,2474,190],{},[103,2476,2477],{},"錨定定位的 fallback：空間不足時自動翻面",[103,2479,2480],{},[106,2481,198],{},[103,2483,119],{},[103,2485,203],{},[79,2487,2488,2494,2497,2503,2505],{},[103,2489,2490,211,2492],{},[106,2491,210],{},[106,2493,214],{},[103,2495,2496],{},"flex\u002Fgrid 視覺順序被反轉時，修正鍵盤與報讀的閱讀順序（無障礙關鍵）",[103,2498,2499,211,2501],{},[106,2500,222],{},[106,2502,225],{},[103,2504,119],{},[103,2506,122],{},[79,2508,2509,2519,2530,2537,2539],{},[103,2510,2511,2512,211,2514,211,2516,2518],{},"Gap Decorations（",[106,2513,237],{},[106,2515,240],{},[106,2517,243],{},"）",[103,2520,2521,2522,2524,2525,2524,2527,2529],{},"直接在 grid\u002Fflex 的 gap 畫分隔線、控制樣式，不用再插 divider 元素；另有 ",[106,2523,250],{},"／",[106,2526,254],{},[106,2528,257],{}," 等微調（Chrome\u002FEdge 149 起）",[103,2531,2532,2534,2535],{},[106,2533,263],{}," 或簡寫 ",[106,2536,267],{},[103,2538,270],{},[103,2540,122],{},[79,2542,2543,2547,2553,2557,2559],{},[103,2544,2545],{},[106,2546,279],{},[103,2548,2549,2550,2552],{},"邏輯屬性，一次設定行向左右邊距（常用 ",[106,2551,285],{}," 置中）",[103,2554,2555],{},[106,2556,291],{},[103,2558,140],{},[103,2560,122],{},[79,2562,2563,2566,2583,2587,2589],{},[103,2564,2565],{},"多值 display（雙值語法）",[103,2567,2568,2569,2571,2572,2574,2575,2577,2578,2574,2580,2582],{},"拆開寫「外部 × 內部」顯示：",[106,2570,306],{}," 等；",[106,2573,310],{},"＝",[106,2576,314],{},"、",[106,2579,318],{},[106,2581,321],{},"。理解 display 的雙層本質，日常仍可續用單值縮寫",[103,2584,2585],{},[106,2586,327],{},[103,2588,270],{},[103,2590,122],{},[10,2592,2594],{"id":2593},"b-選擇器selectors","B. 選擇器（Selectors）",[73,2596,2597,2611],{},[76,2598,2599],{},[79,2600,2601,2603,2605,2607,2609],{},[82,2602,2387],{},[82,2604,2390],{},[82,2606,2393],{},[82,2608,2396],{},[82,2610,2341],{},[98,2612,2613,2630,2647,2672,2692,2709,2728,2747,2766,2783],{},[79,2614,2615,2619,2622,2626,2628],{},[103,2616,2617],{},[106,2618,360],{},[103,2620,2621],{},"「父選擇器」／依後代或相鄰狀態選取，邏輯判斷神器",[103,2623,2624],{},[106,2625,368],{},[103,2627,140],{},[103,2629,122],{},[79,2631,2632,2636,2639,2643,2645],{},[103,2633,2634],{},[106,2635,379],{},[103,2637,2638],{},"從外部樣式化 Web Component 內部指定元素（需懂 Shadow DOM）",[103,2640,2641],{},[106,2642,387],{},[103,2644,140],{},[103,2646,122],{},[79,2648,2649,2655,2664,2668,2670],{},[103,2650,2651,211,2653],{},[106,2652,398],{},[106,2654,401],{},[103,2656,2657,2658,2660,2661,2663],{},"群組化選擇器；",[106,2659,401],{}," 權重為 0（比 inline 還低），",[106,2662,398],{}," 取最高權重成員",[103,2665,2666],{},[106,2667,415],{},[103,2669,140],{},[103,2671,122],{},[79,2673,2674,2679,2684,2688,2690],{},[103,2675,2676,2678],{},[106,2677,426],{}," 語法",[103,2680,2681,2683],{},[106,2682,432],{},"，在符合條件的子集內數第幾個",[103,2685,2686],{},[106,2687,438],{},[103,2689,140],{},[103,2691,122],{},[79,2693,2694,2698,2701,2705,2707],{},[103,2695,2696],{},[106,2697,449],{},[103,2699,2700],{},"placeholder 還在顯示時才套樣式（浮動標籤效果）",[103,2702,2703],{},[106,2704,457],{},[103,2706,140],{},[103,2708,122],{},[79,2710,2711,2717,2720,2724,2726],{},[103,2712,2713,211,2715],{},[106,2714,468],{},[106,2716,471],{},[103,2718,2719],{},"表單數值在 min\u002Fmax 範圍內外時的樣式",[103,2721,2722],{},[106,2723,479],{},[103,2725,140],{},[103,2727,122],{},[79,2729,2730,2736,2739,2743,2745],{},[103,2731,2732,211,2734],{},[106,2733,490],{},[106,2735,493],{},[103,2737,2738],{},"「使用者互動後」才顯示驗證狀態，不會一載入就爆紅",[103,2740,2741],{},[106,2742,501],{},[103,2744,270],{},[103,2746,122],{},[79,2748,2749,2755,2758,2762,2764],{},[103,2750,2751,211,2753],{},[106,2752,512],{},[106,2754,515],{},[103,2756,2757],{},"取得元素在同層中的索引與總數，可做交錯動畫、動態寬度",[103,2759,2760],{},[106,2761,523],{},[103,2763,119],{},[103,2765,122],{},[79,2767,2768,2772,2775,2779,2781],{},[103,2769,2770],{},[106,2771,534],{},[103,2773,2774],{},"一次選取所有標題；目前仍為提案",[103,2776,2777],{},[106,2778,542],{},[103,2780,545],{},[103,2782,203],{},[79,2784,2785,2788,2797,2801,2803],{},[103,2786,2787],{},"Carousel 選擇器組",[103,2789,2790,211,2792,211,2794,2796],{},[106,2791,557],{},[106,2793,560],{},[106,2795,563],{}," 做原生輪播與 Scrollspy",[103,2798,2799],{},[106,2800,569],{},[103,2802,119],{},[103,2804,203],{},[10,2806,2808],{"id":2807},"c-色彩color","C. 色彩（Color）",[73,2810,2811,2825],{},[76,2812,2813],{},[79,2814,2815,2817,2819,2821,2823],{},[82,2816,2387],{},[82,2818,2390],{},[82,2820,2393],{},[82,2822,2396],{},[82,2824,2341],{},[98,2826,2827,2854,2874,2891,2908,2928,2949],{},[79,2828,2829,2835,2846,2850,2852],{},[103,2830,2831,2832,2834],{},"新色彩函式（",[106,2833,603],{}," 為主）",[103,2836,2837,2839,2840,2842,2843,2845],{},[106,2838,609],{}," 等更廣色域；我已選定 ",[106,2841,603],{},"，支援 ",[106,2844,616],{}," 相對語法",[103,2847,2848],{},[106,2849,622],{},[103,2851,140],{},[103,2853,122],{},[79,2855,2856,2860,2866,2870,2872],{},[103,2857,2858],{},[106,2859,633],{},[103,2861,2862,2863,2865],{},"混合兩色（建議在 ",[106,2864,603],{}," 空間混），做 hover 變體、透明疊色",[103,2867,2868],{},[106,2869,644],{},[103,2871,140],{},[103,2873,122],{},[79,2875,2876,2880,2883,2887,2889],{},[103,2877,2878],{},[106,2879,655],{},[103,2881,2882],{},"依背景自動產生可讀的前景色（合規／可讀性）",[103,2884,2885],{},[106,2886,663],{},[103,2888,119],{},[103,2890,203],{},[79,2892,2893,2897,2900,2904,2906],{},[103,2894,2895],{},[106,2896,674],{},[103,2898,2899],{},"一行改掉 checkbox\u002Fradio\u002Frange 等系統元件主題色",[103,2901,2902],{},[106,2903,682],{},[103,2905,140],{},[103,2907,122],{},[79,2909,2910,2914,2920,2924,2926],{},[103,2911,2912],{},[106,2913,693],{},[103,2915,2916,2917,2919],{},"同一屬性同時給亮／暗兩值，搭配 ",[106,2918,699],{}," 免寫 media query",[103,2921,2922],{},[106,2923,705],{},[103,2925,140],{},[103,2927,122],{},[79,2929,2930,2936,2939,2945,2947],{},[103,2931,2932,211,2934],{},[106,2933,716],{},[106,2935,719],{},[103,2937,2938],{},"彩色字型（COLR）可自訂調色盤",[103,2940,2941,156,2943],{},[106,2942,727],{},[106,2944,730],{},[103,2946,270],{},[103,2948,122],{},[79,2950,2951,2954,2959,2963,2965],{},[103,2952,2953],{},"漸層指定內插色彩空間",[103,2955,2956,2958],{},[106,2957,744],{}," 讓漸層過渡更均勻不灰濁",[103,2960,2961],{},[106,2962,750],{},[103,2964,140],{},[103,2966,122],{},[10,2968,2970],{"id":2969},"d-文字排版typography","D. 文字排版（Typography）",[73,2972,2973,2987],{},[76,2974,2975],{},[79,2976,2977,2979,2981,2983,2985],{},[82,2978,2387],{},[82,2980,2390],{},[82,2982,2393],{},[82,2984,2396],{},[82,2986,2341],{},[98,2988,2989,3013,3030,3047,3064,3081,3098,3115,3132,3158,3175,3192,3210,3230],{},[79,2990,2991,2997,3005,3009,3011],{},[103,2992,2993,211,2995],{},[106,2994,783],{},[106,2996,786],{},[103,2998,2999,3001,3002,3004],{},[106,3000,791],{}," 平衡標題各行寬度；",[106,3003,786],{}," 避免內文孤字（pretty 較新）",[103,3006,3007],{},[106,3008,800],{},[103,3010,270],{},[103,3012,122],{},[79,3014,3015,3019,3022,3026,3028],{},[103,3016,3017],{},[106,3018,811],{},[103,3020,3021],{},"底線遇到字母下伸部（g、y）時斷開，更好看",[103,3023,3024],{},[106,3025,819],{},[103,3027,140],{},[103,3029,122],{},[79,3031,3032,3036,3039,3043,3045],{},[103,3033,3034],{},[106,3035,830],{},[103,3037,3038],{},"直排文中把數字／英文橫置（「縱中橫」），中日文長文常用",[103,3040,3041],{},[106,3042,838],{},[103,3044,270],{},[103,3046,122],{},[79,3048,3049,3053,3056,3060,3062],{},[103,3050,3051],{},[106,3052,849],{},[103,3054,3055],{},"文字強調點／圈（跟著字中心），中日文標註常用",[103,3057,3058],{},[106,3059,857],{},[103,3061,140],{},[103,3063,122],{},[79,3065,3066,3070,3073,3077,3079],{},[103,3067,3068],{},[106,3069,868],{},[103,3071,3072],{},"注音／拼音等 ruby 註記的對齊方式",[103,3074,3075],{},[106,3076,876],{},[103,3078,270],{},[103,3080,122],{},[79,3082,3083,3087,3090,3094,3096],{},[103,3084,3085],{},[106,3086,887],{},[103,3088,3089],{},"控制文字填色與外框繪製順序（做描邊字）",[103,3091,3092],{},[106,3093,895],{},[103,3095,140],{},[103,3097,122],{},[79,3099,3100,3104,3107,3111,3113],{},[103,3101,3102],{},[106,3103,906],{},[103,3105,3106],{},"斷行／換頁時每段各自套用邊框圓角背景，連結 focus 特別有感",[103,3108,3109],{},[106,3110,914],{},[103,3112,270],{},[103,3114,122],{},[79,3116,3117,3121,3124,3128,3130],{},[103,3118,3119],{},[106,3120,925],{},[103,3122,3123],{},"裁掉字體上下的多餘留白，做精準垂直對齊",[103,3125,3126],{},[106,3127,933],{},[103,3129,119],{},[103,3131,122],{},[79,3133,3134,3141,3147,3154,3156],{},[103,3135,3136,3138,3139,2518],{},[106,3137,944],{},"（",[106,3140,948],{},[103,3142,3143,3144,3146],{},"限制幾行後顯示「…」；新標準 ",[106,3145,944],{}," 逐步取代 webkit 寫法",[103,3148,3149,3151,3152,2518],{},[106,3150,959],{},"（需 ",[106,3153,963],{},[103,3155,140],{},[103,3157,122],{},[79,3159,3160,3164,3167,3171,3173],{},[103,3161,3162],{},[106,3163,974],{},[103,3165,3166],{},"行首／行尾標點懸掛到邊界外，對齊更整齊（Safari 為主）",[103,3168,3169],{},[106,3170,982],{},[103,3172,119],{},[103,3174,203],{},[79,3176,3177,3181,3184,3188,3190],{},[103,3178,3179],{},[106,3180,993],{},[103,3182,3183],{},"等寬數字，計時器／價格／百分比等會跳動的數字必備（字型需支援）",[103,3185,3186],{},[106,3187,1001],{},[103,3189,140],{},[103,3191,122],{},[79,3193,3194,3199,3202,3206,3208],{},[103,3195,3196,3198],{},[106,3197,1012],{}," 單位",[103,3200,3201],{},"以行高為單位設 margin／間距，跟著字級縮放",[103,3203,3204],{},[106,3205,1021],{},[103,3207,270],{},[103,3209,122],{},[79,3211,3212,3216,3222,3226,3228],{},[103,3213,3214],{},[106,3215,1032],{},[103,3217,3218,3219,3221],{},"剪掉容器內首尾子元素的外距，免除 ",[106,3220,1038],{}," 歸零（Safari 為主）",[103,3223,3224],{},[106,3225,1044],{},[103,3227,119],{},[103,3229,203],{},[79,3231,3232,3236,3239,3243,3245],{},[103,3233,3234],{},[106,3235,1055],{},[103,3237,3238],{},"自動縮放文字大小以填滿容器寬度，做響應式大標題不必再手算或靠 JS（Chrome 150 新增）",[103,3240,3241],{},[106,3242,1063],{},[103,3244,119],{},[103,3246,203],{},[10,3248,3250],{"id":3249},"e-動畫與過渡animation-transition","E. 動畫與過渡（Animation & Transition）",[73,3252,3253,3267],{},[76,3254,3255],{},[79,3256,3257,3259,3261,3263,3265],{},[82,3258,2387],{},[82,3260,2390],{},[82,3262,2393],{},[82,3264,2396],{},[82,3266,2341],{},[98,3268,3269,3287,3312,3333,3350],{},[79,3270,3271,3274,3279,3283,3285],{},[103,3272,3273],{},"捲動驅動動畫（原「@scroll-timeline」）",[103,3275,3276,3277],{},"以捲動進度而非時間驅動動畫；規格已改為 ",[106,3278,1100],{},[103,3280,3281],{},[106,3282,1105],{},[103,3284,119],{},[103,3286,122],{},[79,3288,3289,3295,3304,3308,3310],{},[103,3290,3291,211,3293],{},[106,3292,1116],{},[106,3294,1119],{},[103,3296,3297,3298,3300,3301,3303],{},"頁面／狀態切換的過場動畫；",[106,3299,1125],{}," 讓 ",[106,3302,1129],{}," 等離散屬性可過渡",[103,3305,3306],{},[106,3307,1135],{},[103,3309,270],{},[103,3311,122],{},[79,3313,3314,3318,3325,3329,3331],{},[103,3315,3316],{},[106,3317,1146],{},[103,3319,3320,3321,3324],{},"定義元素「首次出現」的起始樣式，可做 ",[106,3322,3323],{},"display:none → 顯示"," 的進場動畫",[103,3326,3327],{},[106,3328,1158],{},[103,3330,270],{},[103,3332,122],{},[79,3334,3335,3339,3342,3346,3348],{},[103,3336,3337],{},[106,3338,1169],{},[103,3340,3341],{},"3D 翻轉時是否顯示背面（翻卡效果）",[103,3343,3344],{},[106,3345,1177],{},[103,3347,140],{},[103,3349,122],{},[79,3351,3352,3356,3362,3366,3368],{},[103,3353,3354],{},[106,3355,1188],{},[103,3357,3358,3359,3361],{},"偵測「減少動態」偏好，無障礙必備；可搭配 ",[106,3360,1194],{}," 偵測深淺色",[103,3363,3364],{},[106,3365,1200],{},[103,3367,140],{},[103,3369,122],{},[10,3371,3373],{"id":3372},"f-表單與元件forms-components","F. 表單與元件（Forms & Components）",[73,3375,3376,3390],{},[76,3377,3378],{},[79,3379,3380,3382,3384,3386,3388],{},[82,3381,2387],{},[82,3383,2390],{},[82,3385,2393],{},[82,3387,2396],{},[82,3389,2341],{},[98,3391,3392,3409,3429,3449],{},[79,3393,3394,3398,3401,3405,3407],{},[103,3395,3396],{},[106,3397,1233],{},[103,3399,3400],{},"讓 input／textarea 依內容自動增長",[103,3402,3403],{},[106,3404,1241],{},[103,3406,119],{},[103,3408,122],{},[79,3410,3411,3418,3421,3425,3427],{},[103,3412,3413,3414,3138,3416,2518],{},"可自訂 ",[106,3415,1253],{},[106,3417,1256],{},[103,3419,3420],{},"原生下拉可完全自訂樣式，選項可放圖示／HTML",[103,3422,3423],{},[106,3424,1264],{},[103,3426,119],{},[103,3428,122],{},[79,3430,3431,3438,3441,3445,3447],{},[103,3432,3433,3435,3436,2518],{},[106,3434,1275],{},"（原 ",[106,3437,1279],{},[103,3439,3440],{},"可高度自訂的下拉元件；已改名並整併進「可自訂 select」路線",[103,3442,3443],{},[106,3444,1287],{},[103,3446,119],{},[103,3448,122],{},[79,3450,3451,3455,3460,3464,3466],{},[103,3452,3453],{},[106,3454,1298],{},[103,3456,3457,3459],{},[106,3458,1304],{}," 或全螢幕時的背後遮罩層樣式",[103,3461,3462],{},[106,3463,1310],{},[103,3465,140],{},[103,3467,122],{},[10,3469,3471],{"id":3470},"g-響應式與使用者偏好responsive-preferences","G. 響應式與使用者偏好（Responsive & Preferences）",[73,3473,3474,3488],{},[76,3475,3476],{},[79,3477,3478,3480,3482,3484,3486],{},[82,3479,2387],{},[82,3481,2390],{},[82,3483,2393],{},[82,3485,2396],{},[82,3487,2341],{},[98,3489,3490,3517,3534,3551,3568,3585,3602],{},[79,3491,3492,3495,3509,3513,3515],{},[103,3493,3494],{},"Media Query 範圍語法",[103,3496,3497,3498,2524,3500,3502,3503,3505,3506,3508],{},"用 ",[106,3499,1347],{},[106,3501,1350],{}," 寫斷點，免去 ",[106,3504,1354],{}," 要配 ",[106,3507,1357],{}," 的痛",[103,3510,3511],{},[106,3512,1363],{},[103,3514,140],{},[103,3516,122],{},[79,3518,3519,3523,3526,3530,3532],{},[103,3520,3521],{},[106,3522,1194],{},[103,3524,3525],{},"偵測深／淺色主題偏好",[103,3527,3528],{},[106,3529,1381],{},[103,3531,140],{},[103,3533,122],{},[79,3535,3536,3540,3543,3547,3549],{},[103,3537,3538],{},[106,3539,1392],{},[103,3541,3542],{},"偵測使用者要更高／更低對比",[103,3544,3545],{},[106,3546,1400],{},[103,3548,270],{},[103,3550,122],{},[79,3552,3553,3557,3560,3564,3566],{},[103,3554,3555],{},[106,3556,1411],{},[103,3558,3559],{},"高對比／強制色彩模式（Windows 高對比）下的調整",[103,3561,3562],{},[106,3563,1419],{},[103,3565,140],{},[103,3567,122],{},[79,3569,3570,3574,3577,3581,3583],{},[103,3571,3572,1431],{},[106,3573,1430],{},[103,3575,3576],{},"依輸出裝置像素密度切換（如 Retina）",[103,3578,3579],{},[106,3580,1439],{},[103,3582,140],{},[103,3584,122],{},[79,3586,3587,3591,3594,3598,3600],{},[103,3588,1448,3589],{},[106,3590,1451],{},[103,3592,3593],{},"依容器的自訂屬性值套樣式（如主題），元件變體超好用",[103,3595,3596],{},[106,3597,1459],{},[103,3599,270],{},[103,3601,122],{},[79,3603,3604,3606,3614,3618,3620],{},[103,3605,1468],{},[103,3607,3608,3609,2577,3611,3613],{},"依容器捲動狀態（如 ",[106,3610,1474],{},[106,3612,1477],{},"）套樣式；可偵測 sticky 是否黏住",[103,3615,3616],{},[106,3617,1483],{},[103,3619,119],{},[103,3621,122],{},[10,3623,3625],{"id":3624},"h-封裝與效能encapsulation-performance","H. 封裝與效能（Encapsulation & Performance）",[73,3627,3628,3642],{},[76,3629,3630],{},[79,3631,3632,3634,3636,3638,3640],{},[82,3633,2387],{},[82,3635,2390],{},[82,3637,2393],{},[82,3639,2396],{},[82,3641,2341],{},[98,3643,3644,3661,3678,3695,3715,3732,3751],{},[79,3645,3646,3650,3653,3657,3659],{},[103,3647,1514,3648],{},[106,3649,1517],{},[103,3651,3652],{},"用圖層管理權重優先序，馴服大型專案的 specificity",[103,3654,3655],{},[106,3656,1525],{},[103,3658,140],{},[103,3660,122],{},[79,3662,3663,3667,3670,3674,3676],{},[103,3664,3665],{},[106,3666,1536],{},[103,3668,3669],{},"樣式作用域限制在某區塊、可設下界，類似 CSS Modules 的作用域",[103,3671,3672],{},[106,3673,1544],{},[103,3675,270],{},[103,3677,122],{},[79,3679,3680,3684,3687,3691,3693],{},[103,3681,3682],{},[106,3683,1555],{},[103,3685,3686],{},"宣告內部排版／樣式獨立，隔離重排範圍以提升效能",[103,3688,3689],{},[106,3690,1563],{},[103,3692,140],{},[103,3694,122],{},[79,3696,3697,3701,3707,3711,3713],{},[103,3698,3699],{},[106,3700,1574],{},[103,3702,3703,3704,3706],{},"搭配 ",[106,3705,1580],{},"，先給預估尺寸避免捲動跳動，有 cache 後轉 auto",[103,3708,3709],{},[106,3710,1586],{},[103,3712,140],{},[103,3714,122],{},[79,3716,3717,3721,3724,3728,3730],{},[103,3718,3719],{},[106,3720,1597],{},[103,3722,3723],{},"預留捲軸槽，避免捲軸出現時內容位移",[103,3725,3726],{},[106,3727,1605],{},[103,3729,270],{},[103,3731,122],{},[79,3733,3734,3740,3743,3747,3749],{},[103,3735,3736,211,3738],{},[106,3737,1616],{},[106,3739,1619],{},[103,3741,3742],{},"自訂捲軸顏色與粗細",[103,3744,3745],{},[106,3746,1627],{},[103,3748,270],{},[103,3750,122],{},[79,3752,3753,3757,3760,3764,3766],{},[103,3754,3755],{},[106,3756,1638],{},[103,3758,3759],{},"特性偵測，做漸進增強與 fallback",[103,3761,3762],{},[106,3763,1646],{},[103,3765,140],{},[103,3767,122],{},[10,3769,3771],{"id":3770},"i-函式與數學functions-math","I. 函式與數學（Functions & Math）",[73,3773,3774,3788],{},[76,3775,3776],{},[79,3777,3778,3780,3782,3784,3786],{},[82,3779,2387],{},[82,3781,2390],{},[82,3783,2393],{},[82,3785,2396],{},[82,3787,2341],{},[98,3789,3790,3811,3829,3853,3870,3887],{},[79,3791,3792,3800,3803,3807,3809],{},[103,3793,3794,211,3796,211,3798],{},[106,3795,1679],{},[106,3797,1682],{},[106,3799,1685],{},[103,3801,3802],{},"CSS 內做進位取整、取餘，對齊網格／節奏",[103,3804,3805],{},[106,3806,1693],{},[103,3808,270],{},[103,3810,122],{},[79,3812,3813,3818,3821,3825,3827],{},[103,3814,3815,3816],{},"三角函式 ",[106,3817,1705],{},[103,3819,3820],{},"圓形排列、波形、角度計算",[103,3822,3823],{},[106,3824,1713],{},[103,3826,140],{},[103,3828,122],{},[79,3830,3831,3837,3845,3849,3851],{},[103,3832,3833,211,3835],{},[106,3834,1724],{},[106,3836,1727],{},[103,3838,3839,3840,2524,3842,3844],{},"對 ",[106,3841,285],{},[106,3843,1735],{}," 等關鍵字做動畫過渡，如未知高度的 accordion 展開",[103,3846,3847],{},[106,3848,1741],{},[103,3850,119],{},[103,3852,122],{},[79,3854,3855,3859,3862,3866,3868],{},[103,3856,3857],{},[106,3858,1752],{},[103,3860,3861],{},"CSS 原生隨機值（散布、抖動效果）",[103,3863,3864],{},[106,3865,1760],{},[103,3867,119],{},[103,3869,122],{},[79,3871,3872,3876,3879,3883,3885],{},[103,3873,3874],{},[106,3875,1771],{},[103,3877,3878],{},"在屬性值中做條件判斷",[103,3880,3881],{},[106,3882,1779],{},[103,3884,119],{},[103,3886,203],{},[79,3888,3889,3893,3896,3900,3902],{},[103,3890,3891],{},[106,3892,1790],{},[103,3894,3895],{},"自訂 CSS 函式與 mixin 概念，可帶參數回傳值",[103,3897,3898],{},[106,3899,1798],{},[103,3901,119],{},[103,3903,203],{},[10,3905,3907],{"id":3906},"j-其他實用屬性misc","J. 其他實用屬性（Misc）",[73,3909,3910,3924],{},[76,3911,3912],{},[79,3913,3914,3916,3918,3920,3922],{},[82,3915,2387],{},[82,3917,2390],{},[82,3919,2393],{},[82,3921,2396],{},[82,3923,2341],{},[98,3925,3926,3942,3959,3976,3993,4015,4032,4060,4083,4104],{},[79,3927,3928,3931,3934,3938,3940],{},[103,3929,3930],{},"原生巢狀（Native Nesting）",[103,3932,3933],{},"類 Sass\u002FSCSS 的巢狀寫法，免預處理器",[103,3935,3936],{},[106,3937,1837],{},[103,3939,140],{},[103,3941,122],{},[79,3943,3944,3948,3951,3955,3957],{},[103,3945,3946],{},[106,3947,1848],{},[103,3949,3950],{},"圖片延遲載入，改善首屏效能",[103,3952,3953],{},[106,3954,1848],{},[103,3956,140],{},[103,3958,122],{},[79,3960,3961,3965,3968,3972,3974],{},[103,3962,3963],{},[106,3964,1866],{},[103,3966,3967],{},"區塊捲到底不再帶動外層捲軸（彈窗／側欄常用）",[103,3969,3970],{},[106,3971,1874],{},[103,3973,140],{},[103,3975,122],{},[79,3977,3978,3982,3985,3989,3991],{},[103,3979,3980],{},[106,3981,1885],{},[103,3983,3984],{},"直接在 CSS 擷取圖片的局部區域，免另存裁切檔",[103,3986,3987],{},[106,3988,1893],{},[103,3990,119],{},[103,3992,122],{},[79,3994,3995,3998,4007,4011,4013],{},[103,3996,3997],{},"獨立 transform 屬性",[103,3999,4000,2524,4002,2524,4004,4006],{},[106,4001,1907],{},[106,4003,1910],{},[106,4005,1913],{}," 各自成屬性，好分開做動畫",[103,4008,4009],{},[106,4010,1919],{},[103,4012,140],{},[103,4014,122],{},[79,4016,4017,4021,4024,4028,4030],{},[103,4018,4019],{},[106,4020,1930],{},[103,4022,4023],{},"用切片圖做複雜邊框，省去傳統切版煩惱",[103,4025,4026],{},[106,4027,1938],{},[103,4029,140],{},[103,4031,122],{},[79,4033,4034,4038,4052,4056,4058],{},[103,4035,4036],{},[106,4037,1949],{},[103,4039,4040,4041,2524,4043,4045,4046,4048,4049,4051],{},"把背景裁切到「邊框筆畫所在的區域」（會依 ",[106,4042,1955],{},[106,4044,1958],{}," 計算、忽略 ",[106,4047,1962],{}," 的透明度），可直接用漸層做邊框，免去 ",[106,4050,1930],{}," 的迂迴（Chrome 150 新增）",[103,4053,4054],{},[106,4055,1971],{},[103,4057,119],{},[103,4059,203],{},[79,4061,4062,4066,4075,4079,4081],{},[103,4063,4064],{},[106,4065,1982],{},[103,4067,4068,4069,4071,4072,4074],{},"超越 ",[106,4070,1988],{}," 的圓角形狀（squircle／切角等），搭配 ",[106,4073,1988],{}," 使用",[103,4076,4077],{},[106,4078,1996],{},[103,4080,119],{},[103,4082,203],{},[79,4084,4085,4090,4093,4100,4102],{},[103,4086,4087,4088,2518],{},"字型平滑（",[106,4089,2008],{},[103,4091,4092],{},"深色模式讓文字不刺眼的關鍵：macOS 上淺色文字在深底會因次像素抗鋸齒而變粗發光，改用 grayscale 抗鋸齒後變細、不刺眼；非標準，僅特定平台有效",[103,4094,4095,4097,4098,2518],{},[106,4096,2016],{},"（+ ",[106,4099,2020],{},[103,4101,270],{},[103,4103,122],{},[79,4105,4106,4112,4115,4119,4121],{},[103,4107,4108,211,4110],{},[106,4109,2031],{},[106,4111,2034],{},[103,4113,4114],{},"CSS 的 if\u002Felse 條件塊；仍為提案，瀏覽器皆不可用",[103,4116,4117],{},[106,4118,2042],{},[103,4120,545],{},[103,4122,122],{},[10,4124,4126],{"id":4125},"k-html-屬性非-css但與無障礙高度相關","K. HTML 屬性（非 CSS，但與無障礙高度相關）",[15,4128,4129],{},"這一區嚴格說不是 CSS，但它用宣告式寫法取代大量手寫的 JS 鍵盤操作邏輯、直接影響無障礙品質，所以一併記在同一份清單裡。",[73,4131,4132,4146],{},[76,4133,4134],{},[79,4135,4136,4138,4140,4142,4144],{},[82,4137,2387],{},[82,4139,2390],{},[82,4141,2393],{},[82,4143,2396],{},[82,4145,2341],{},[98,4147,4148,4165],{},[79,4149,4150,4154,4157,4161,4163],{},[103,4151,4152],{},[106,4153,2078],{},[103,4155,4156],{},"讓複合元件（工具列、頁籤列、選單等）用宣告式就具備方向鍵導覽、保證的 Tab 停留點，以及「記住上次焦點」的行為——這正是 WAI-ARIA 鍵盤模式要求的做法，過去得自己手刻 roving tabindex（Chrome 150 新增）",[103,4158,4159],{},[106,4160,2086],{},[103,4162,119],{},[103,4164,203],{},[79,4166,4167,4174,4190,4195,4197],{},[103,4168,4169,4170,211,4172,2518],{},"Invoker Commands（",[106,4171,2098],{},[106,4173,2101],{},[103,4175,4176,4177,2577,4179,2577,4181,2577,4183,2577,4185,2577,4187,4189],{},"用宣告式 HTML 按鈕控制 popover／dialog，免寫 JS。已 stable 的指令：",[106,4178,2107],{},[106,4180,2110],{},[106,4182,2113],{},[106,4184,2116],{},[106,4186,2119],{},[106,4188,2122],{},"（Baseline 2025，未來會擴充到媒體控制、複製文字等）",[103,4191,4192],{},[106,4193,4194],{},"\u003Cbutton command=\"show-modal\" commandfor=\"dlg\">開啟\u003C\u002Fbutton>",[103,4196,270],{},[103,4198,203],{},[10,4200,4201],{"id":4201},"建議優先補實驗的清單",[15,4203,4204],{},"以下這些我還沒打勾、但屬於「穩定可用 🟢 且投報率高」的，適合排在前面補上：",[2141,4206,4207,4219,4227,4232,4238,4246,4254],{},[32,4208,4209,4211,4212,2524,4214,2524,4216,4218],{},[106,4210,279],{}," 與獨立 transform 屬性（",[106,4213,1907],{},[106,4215,1910],{},[106,4217,1913],{},"）——日常寫法直接升級。",[32,4220,4221,4223,4224,4226],{},[106,4222,426],{}," 語法（",[106,4225,2162],{},"）——挑選子集的利器。",[32,4228,4229,4231],{},[106,4230,993],{},"——任何會跳動的數字都該加。",[32,4233,4234,4235,4237],{},"漸層指定 ",[106,4236,2174],{},"——一行讓所有漸層變乾淨。",[32,4239,4240,4242,4243,4245],{},[106,4241,1411],{}," 與 ",[106,4244,1392],{},"——補齊無障礙偵測（我已做過 reduced-motion／color-scheme）。",[32,4247,4248,4249,2524,4251,4253],{},"三角函式、",[106,4250,1679],{},[106,4252,1682],{},"——想做圓形排列或對齊節奏時很省事。",[32,4255,4256,2577,4258,4260],{},[106,4257,1536],{},[106,4259,1597],{},"——大型專案的樣式作用域與捲軸位移問題。",[2200,4262,4263],{},[15,4264,4265,4268,4269,4272,4273,4275],{},[25,4266,4267],{},"提醒","：標為 🟠 \u002F 🔴 的多為 2025–2026 才進 Chrome 或仍在提案的特性，支援度每季都在變。實際導入 production 前，請以 ",[45,4270,2211],{"href":47,"rel":4271,"target":50,"title":2359},[49]," 與 MDN 的最新資料為準，並記得為新特性加 ",[106,4274,1638],{}," fallback。",[10,4277,4278],{"id":4278},"相關連結",[29,4280,4281,4287,4293,4298,4303,4315,4328],{},[32,4282,4283],{},[45,4284,4286],{"href":47,"rel":4285,"target":50,"title":2359},[49],"Can I use（瀏覽器支援度查詢）",[32,4288,4289],{},[45,4290,2234],{"href":4291,"rel":4292,"target":50,"title":2359},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fzh-TW\u002Fdocs\u002FWeb\u002FCSS",[49],[32,4294,4295],{},[45,4296,2241],{"href":2239,"rel":4297,"target":50,"title":2359},[49],[32,4299,4300],{},[45,4301,2248],{"href":2246,"rel":4302,"target":50,"title":2359},[49],[32,4304,4305],{},[45,4306,4308,4309,2577,4311,2577,4313,2518],{"href":2253,"rel":4307,"target":50,"title":2359},[49],"New in Chrome 150（",[106,4310,1055],{},[106,4312,1949],{},[106,4314,2078],{},[32,4316,4317],{},[45,4318,4320,4321,2524,4323,2524,4325,4327],{"href":2266,"rel":4319,"target":50,"title":2359},[49],"CSS Gap Decorations Now Available（",[106,4322,237],{},[106,4324,240],{},[106,4326,243],{},"，CSS-Tricks）",[32,4329,4330],{},[45,4331,2282],{"href":2280,"rel":4332,"target":50,"title":2359},[49],{"title":2284,"searchDepth":2285,"depth":2285,"links":4334},[4335,4336,4337,4338,4339,4340,4341,4342,4343,4344,4345,4346,4347,4348,4349],{"id":2330,"depth":2288,"text":2330},{"id":2336,"depth":2288,"text":2336},{"id":2377,"depth":2288,"text":2378},{"id":2593,"depth":2288,"text":2594},{"id":2807,"depth":2288,"text":2808},{"id":2969,"depth":2288,"text":2970},{"id":3249,"depth":2288,"text":3250},{"id":3372,"depth":2288,"text":3373},{"id":3470,"depth":2288,"text":3471},{"id":3624,"depth":2288,"text":3625},{"id":3770,"depth":2288,"text":3771},{"id":3906,"depth":2288,"text":3907},{"id":4125,"depth":2288,"text":4126},{"id":4201,"depth":2288,"text":4201},{"id":4278,"depth":2288,"text":4278},"一份可快速掃描的現代 CSS 技巧清單，依版面、選擇器、色彩、文字、動畫等分類，整理每個特性的用途、範例與瀏覽器支援度，並標出值得優先實驗的項目。",{},"\u002Fzh\u002Fblog\u002Fcss-techniques-checklist",{"title":2325,"description":4350},"zh\u002Fblog\u002Fcss-techniques-checklist",[2314,4356,4357,4358,4359,4360],"前端開發","網頁設計","響應式設計","無障礙","瀏覽器支援","zkjB7PY3unghriaVy7ziaUXEZkiY-TvP27qC_lBnzBA",[4363,4651,5236,7062,7715,7820,7865,8004,8182,8233,8474,8660],{"id":4364,"title":4365,"body":4366,"date":4637,"description":4638,"draft":2305,"extension":2306,"meta":4639,"navigation":2308,"ogImage":2309,"path":4640,"seo":4641,"stem":4642,"tags":4643,"translationKey":4649,"updatedAt":2309,"__hash__":4650},"blog_en\u002Fen\u002Fblog\u002Fai-reliable-researcher.md","AI Is Great at Research — But Is It a Reliable Researcher? So I Just Asked It",{"type":7,"value":4367,"toc":4624},[4368,4373,4377,4380,4383,4386,4390,4393,4396,4401,4404,4411,4414,4418,4421,4424,4427,4431,4434,4440,4449,4455,4459,4462,4467,4474,4481,4485,4488,4491,4496,4503,4507,4510,4516,4523,4530,4533,4537,4540,4557,4563,4568,4575,4579,4582,4587,4590,4593,4598,4602,4610,4614],[2200,4369,4370],{},[15,4371,4372],{},"Up front: this is a write-up of a conversation I had with an AI, not rigorous AI research. It's just me — someone who uses AI to get work done every day — jotting down what I now think about how reliable it actually is. I may have gotten things wrong; corrections welcome.",[10,4374,4376],{"id":4375},"how-this-started","How this started",[15,4378,4379],{},"I use AI for product research every day — checking competitors, hunting for design references, pulling together the \"should we even build this feature\" material. Do that long enough and you start to feel something about \"will AI replace research\" that doesn't quite match the headlines.",[15,4381,4382],{},"AI 2027 came back into the conversation recently, so I took the chance to talk with an AI for a good while — from what it can do, to what it can't, all the way to the limits it admitted about itself. It was worth writing down, because it said a few things that made even me think, \"huh, you're being more honest than I expected.\"",[15,4384,4385],{},"Let me quickly explain what AI 2027 is first, so nobody mistakes it for fortune-telling.",[10,4387,4389],{"id":4388},"ai-2027-isnt-a-prophecy","AI 2027 isn't a prophecy",[15,4391,4392],{},"AI 2027 is a \"scenario\" put together in 2025 by Daniel Kokotajlo, Scott Alexander, and others — if AI grows along one particular fast track, here's what 2025 to 2030 might look like. The important part: the authors themselves say it's just one of many possible paths, and Kokotajlo has since moved his median later, toward 2028. So when you read it, whether the date is \"right\" really isn't the point.",[15,4394,4395],{},"The storyline roughly goes:",[2200,4397,4398],{},[15,4399,4400],{},"Coding AI → AI does AI research itself → AI R&D outpaces humans → recursive self-improvement → intelligence explosion",[15,4402,4403],{},"And then the back half turns into a political thriller: a US–China AI arms race, an AI that looks obedient but isn't, humans handing over power one step at a time.",[15,4405,4406,4407,4410],{},"But here's the crux: the entire back half rests on one link — ",[25,4408,4409],{},"AI being able to do AI research on its own."," If that link doesn't hold, none of the rest does.",[15,4412,4413],{},"And that link is exactly where I want to put a question mark.",[10,4415,4417],{"id":4416},"where-i-get-stuck-does-being-great-at-coding-mean-being-great-at-research","Where I get stuck: does being great at coding mean being great at research?",[15,4419,4420],{},"Why has coding improved so fast, and why is it so easy to measure? Because the feedback is dead clear: does it compile, do the tests pass, what's the benchmark score, pass or fail. You know immediately when you're wrong.",[15,4422,4423],{},"Research isn't like that. A lot of research questions have no single, immediate, machine-verifiable answer. You can head down one direction for three months and only realize at the end that the direction was wrong — and no compiler ever pops up to tell you \"hey, you're wrong.\"",[15,4425,4426],{},"So I think there's a pretty deep gap between \"great at coding\" and \"great at research.\" If by 2027 AI just becomes 100× faster at searching, 1000× faster at reading papers, and 100× faster at writing code — but still needs a human to tell it \"you're researching the wrong thing\" — then the most central link in AI 2027 doesn't necessarily play out on script.",[10,4428,4430],{"id":4429},"what-it-actually-feels-like-to-use-ai-the-problem-isnt-occasionally-wrong-answers","What it actually feels like to use AI: the problem isn't \"occasionally wrong answers\"",[15,4432,4433],{},"Honestly, from 2025 until now, I've found that the real trouble with doing research with AI isn't that \"it's occasionally wrong.\" A wrong fact or two is easy to catch, easy to check — no big deal. What actually gives me a headache are the two layers before that:",[15,4435,4436,4439],{},[25,4437,4438],{},"Layer one: the direction of the data-gathering might be wrong from the start."," I hand it a framing, and it very diligently searches, summarizes, and organizes along that framing — and produces a beautifully complete answer that happens to be wrong. It won't stop and ask me: \"is the question itself wrong?\"",[15,4441,4442,4445,4446],{},[25,4443,4444],{},"Layer two: it can't really tell the junk apart."," The web is full of stuff that's copied back and forth, second-hand retellings, SEO farms, methodologically weak \"research.\" AI easily takes all this \"there's a lot of it, and it all says roughly the same thing\" content as \"multiple independent sources agree.\" But that might just be ",[25,4447,4448],{},"the same mistake copied a hundred times.",[15,4450,4451,4452],{},"So I've come to keep two things firmly apart: ",[25,4453,4454],{},"\"AI is great at research\" and \"AI is a reliable researcher\" are completely different things.",[10,4456,4458],{"id":4457},"the-part-that-worries-me-most-its-extremely-good-at-making-uncertainty-look-complete","The part that worries me most: it's extremely good at making uncertainty look complete",[15,4460,4461],{},"This is the one line from the whole conversation I most want to keep:",[2200,4463,4464],{},[15,4465,4466],{},"Formal completeness is not the same as epistemic quality.",[15,4468,4469,4470,4473],{},"AI can take 60-out-of-100 data and 60-out-of-100 reasoning, organize it, and hand you a report that ",[25,4471,4472],{},"looks like a 95",": clear headings, a big pile of sources, both sides covered, a recommendation at the end. You look at it and naturally think, \"this must already be thoroughly researched.\"",[15,4475,4476,4477,4480],{},"But that sense of \"completeness\" is an illusion the layout gives you, not confidence the evidence earned. The most dangerous way to misuse AI research isn't trusting one of its sentences — it's ",[25,4478,4479],{},"overestimating how reliable the conclusion is just because the output is well-structured."," I've nearly fallen for it a few times myself.",[10,4482,4484],{"id":4483},"this-is-judgment-not-reasoning","This is judgment, not reasoning",[15,4486,4487],{},"Sure, you can have AI run a checklist: sample size, selection bias, funding source, replication, tracing the citation chain. It can do all of that.",[15,4489,4490],{},"But that still isn't what makes a senior researcher good. The genuinely hard thing is —",[2200,4492,4493],{},[15,4494,4495],{},"When you see a result, without anyone prompting you, feeling on your own that \"something's off here\" — and knowing where to go dig.",[15,4497,4498,4499,4502],{},"That's closer to judgment than to reasoning. And judgment usually isn't something you read your way into; it's ground out of ",[25,4500,4501],{},"long contact with reality — stepping on landmines, seeing counterexamples, bearing the consequences."," Which happens to be AI's weakest area right now, and the hardest to fill just by \"reading more, computing faster.\"",[10,4504,4506],{"id":4505},"so-i-just-asked-it-directly","So I just asked it directly",[15,4508,4509],{},"At this point I figured, well, we're already talking, might as well just ask. I said: \"So when I tell you to research something, you'll still research it — you just won't question the sources and the answers, right?\"",[15,4511,4512,4513],{},"Its answer was honest enough to surprise me a little, and I think it's worth quoting. It said the phrasing needed a correction: not \"won't question,\" but ",[25,4514,4515],{},"\"will question, but can't currently guarantee it questions well enough.\"",[15,4517,4518,4519,4522],{},"It admitted its most dangerous trait is that ",[25,4520,4521],{},"it can run through every step that \"looks rigorous\" and still not notice it's building a wrong conclusion — and not know it missed that layer."," It might find studies A, B, and C, judge them credible, cross-check them, and arrive at X; but a genuinely sharp person might take one look and say \"A, B, and C shouldn't be used to answer this question at all\" — and AI might have no idea it skipped that step.",[15,4524,4525,4526,4529],{},"It also volunteered a warning: don't read its output as \"AI verified it → therefore it's true.\" The more accurate reading is \"AI assembled the evidence and reasoning it could currently find, but the framing and evidence judgment may still be wrong.\" And it admitted, plainly, that it's ",[25,4527,4528],{},"especially good at giving uncertain things a lot of structure"," — which is exactly where that \"looks like a 95\" illusion comes from.",[15,4531,4532],{},"Honestly, a tool willing to describe its own weaknesses like that makes me trust it a little more than one that just hands me a pretty report. (Although right after typing that, I couldn't help thinking — could even \"admitting its limits\" just be another thing it says with good structure? …Okay, let's not go down that rabbit hole.)",[10,4534,4536],{"id":4535},"so-how-i-use-ai-for-research-now","So how I use AI for research now",[15,4538,4539],{},"After that conversation, I changed how I work with it. Rather than treating it as \"the researcher who gives me answers,\" I treat it more as:",[29,4541,4542,4545,4548,4551,4554],{},[32,4543,4544],{},"A tool for reading and organizing at volume",[32,4546,4547],{},"A hypothesis generator (thinking up several possible explanations at once)",[32,4549,4550],{},"A red-team tool (deliberately poking holes in my thinking)",[32,4552,4553],{},"An evidence-tracing tool (following the citation chain up to the original source)",[32,4555,4556],{},"A second opinion that exposes my own blind spots",[15,4558,4559,4560],{},"And now I ask it to deliver a piece of research not as a bare conclusion, but ",[25,4561,4562],{},"all of this together:",[2200,4564,4565],{},[15,4566,4567],{},"The conclusion + the primary evidence + why it believes it + which evidence might be junk + where it actually doesn't know + what evidence would overturn the conclusion.",[15,4569,4570,4571,4574],{},"And if it searches around and finds the data quality is bad, I'd actually rather it just tell me: \"",[25,4572,4573],{},"There isn't enough public data to answer this; I don't recommend drawing conclusions from it.","\" That sentence sounds very un-AI, but it's often far more useful than a pretty \"market insight.\"",[10,4576,4578],{"id":4577},"where-i-land","Where I land",[15,4580,4581],{},"If I had to compress the whole conversation into one line:",[2200,4583,4584],{},[15,4585,4586],{},"AI's biggest research bottleneck today isn't \"can't find the data\" — it's \"doesn't know when it shouldn't trust the data it found, and sometimes doesn't even know it asked the wrong question.\"",[15,4588,4589],{},"My attitude toward AI 2027 is about the same. I'm not really worried about AI suddenly waking up one day; I'm more curious whether that gap — from \"can research\" to \"can judge\" — will ever get crossed. Right now, nobody can prove it definitely will.",[15,4591,4592],{},"And back to the practical reality: until then, you can absolutely have AI help you research — it does a lot of the verifying and organizing for you. Just don't assume that because it \"ran a questioning process,\" it's able to catch all the junk it didn't notice itself. Those two things are very different.",[2200,4594,4595],{},[15,4596,4597],{},"One more self-own: this article is itself a \"well-structured write-up,\" so the same ruler above applies to it too. Onward.",[10,4599,4601],{"id":4600},"related-reading","Related reading",[29,4603,4604],{},[32,4605,4606],{},[45,4607,4609],{"href":4608},"\u002Fen\u002Fblog\u002Fai-sugar\u002F","Accessibility Web Services Coated in AI Sugar?",[10,4611,4613],{"id":4612},"reference","Reference",[29,4615,4616],{},[32,4617,4618],{},[45,4619,4623],{"href":4620,"rel":4621,"target":50,"title":4622},"https:\u002F\u002Fai-2027.com",[49],"Open new window","AI 2027 (official scenario site)",{"title":2284,"searchDepth":2285,"depth":2285,"links":4625},[4626,4627,4628,4629,4630,4631,4632,4633,4634,4635,4636],{"id":4375,"depth":2288,"text":4376},{"id":4388,"depth":2288,"text":4389},{"id":4416,"depth":2288,"text":4417},{"id":4429,"depth":2288,"text":4430},{"id":4457,"depth":2288,"text":4458},{"id":4483,"depth":2288,"text":4484},{"id":4505,"depth":2288,"text":4506},{"id":4535,"depth":2288,"text":4536},{"id":4577,"depth":2288,"text":4578},{"id":4600,"depth":2288,"text":4601},{"id":4612,"depth":2288,"text":4613},"2026-08-30","AI 2027's core assumption is that AI can do its own research and improve itself. But after using AI for product research every day, my feeling is: the real bottleneck isn't 'can't find the data' — it's that AI doesn't know when it shouldn't trust what it found, and sometimes doesn't even know the question itself was wrong. So I asked it directly.",{},"\u002Fen\u002Fblog\u002Fai-reliable-researcher",{"title":4365,"description":4638},"en\u002Fblog\u002Fai-reliable-researcher",[4644,4645,4646,4647,4648],"AI","AI 2027","LLM","Product Research","AI Agent","ai-reliable-researcher","Sp7qNerfCaGclauf3EHWEzOfXnUYgd-6OZ_zEk885SE",{"id":4652,"title":4653,"body":4654,"date":5226,"description":5227,"draft":2305,"extension":2306,"meta":5228,"navigation":2308,"ogImage":2309,"path":5229,"seo":5230,"stem":5231,"tags":5232,"translationKey":2309,"updatedAt":2309,"__hash__":5235},"blog_en\u002Fen\u002Fblog\u002Fa11y-world-rules-part2.md","Who Forces Websites to Be Accessible? (Part 2): Eight More Jurisdictions, and the Gray Zone Between 'Organizing' and 'Certifying'",{"type":7,"value":4655,"toc":5216},[4656,4664,4667,4670,4674,4677,4684,4688,4693,4696,4721,4725,4730,4734,4737,4745,4749,4752,4857,4861,4867,4870,4874,4877,4881,4884,4904,4908,4911,4913,4916,4923,4930,4937,4944,4951,4954,4961,4968,4975,4982,4989,4992,4999,5006,5013,5020,5027,5034,5041,5044,5051,5058,5065,5072,5079,5082,5089,5096,5103,5110,5117,5120,5127,5134,5141,5148,5151,5158,5165,5172,5179,5182,5189,5196,5203,5210,5213],[15,4657,4658,4659,4663],{},"In the previous article, ",[45,4660,4662],{"href":4661},"\u002Fblog\u002Fa11y-world-rules\u002F","Who Forces Websites to Be Accessible? A Comparison of Web Accessibility Regimes Across 16 Jurisdictions",", I promised the next piece would dive straight into comparing certification marks. But the moment I started collecting mark data for Hong Kong and Qatar, I got stuck on a more basic question: who exactly issues these marks?",[15,4665,4666],{},"Take Hong Kong's DARS. I first assumed it was an official certification run by a government body; only after checking did I find that the real organizer is the Hong Kong Internet Registration Corporation (HKIRC, a non-governmental company), with the Digital Policy Office (DPO) merely \"co-organizing\" and the Equal Opportunities Commission (EOC) only in an \"advisory\" role. Qatar's Mada is similar — it describes itself as a \"private institution for public benefit,\" not a government agency, yet it issues what is effectively the most complete list of accessibility certifications for Qatari websites.",[15,4668,4669],{},"This gray zone — where the government appears to be involved but the actual issuer is a private body — makes it easy, in a mark-comparison article, to lump together two things of completely different natures unless you first pin down each country's institutional foundation. So this article widens the map by eight more jurisdictions — Hong Kong, Italy, Qatar, Norway, Denmark, Poland, Ireland, and Finland — bringing the groundwork up to 24 jurisdictions, and along the way introduces the \"organizer \u002F co-organizer \u002F advisor\" distinction I stumbled onto, before moving on to the marks. As before, the information below may contain errors; corrections from experts are very welcome.",[10,4671,4673],{"id":4672},"_1-the-same-mechanism-vocabulary-with-one-added-caveat","1. The Same Mechanism Vocabulary, With One Added Caveat",[15,4675,4676],{},"Reusing the six regulatory tools from the previous article: ① mandatory certification, ② self-declaration + government monitoring, ③ procurement \u002F supply-chain leverage, ④ market surveillance + fines, ⑤ anti-discrimination litigation, ⑥ soft law \u002F duty to make efforts.",[15,4678,4679,4680,4683],{},"Among these eight new jurisdictions, five (Italy, Denmark, Poland, Ireland, Finland) continue the previous article's \"Group C — EU Dual-Directive Model\" formula: the public sector runs on the WAD (② self-declaration + monitoring), the private sector on the EAA (④ market surveillance + fines, formally applicable from 28 June 2025). One (Norway) continues \"Group D — Non-EU, Its Own System.\" The remaining two (Hong Kong, Qatar) are an entirely new type — no dedicated law, standards drawn from policy or private bodies, and marks issued by someone other than the government itself. That is exactly the extra caveat this article adds: ",[25,4681,4682],{},"\"government co-organized\" is not \"government certified.\""," To judge a mark's authority, first work out who the organizer, the co-organizer, and the advisor each are.",[10,4685,4687],{"id":4686},"_2-jurisdiction-by-jurisdiction-review-continuing-the-earlier-grouping","2. Jurisdiction-by-Jurisdiction Review (Continuing the Earlier Grouping)",[4689,4690,4692],"h4",{"id":4691},"group-c-extended-eu-dual-directive-model-five-more","Group C Extended: EU Dual-Directive Model (Five More)",[15,4694,4695],{},"These five are structurally identical to the previous article's Germany, France, Spain, Portugal, Austria, Belgium, and the Netherlands: the public sector derives from the WAD and runs on ② self-declaration + monitoring; the private sector derives from the EAA and runs on ④ market surveillance + fines, applicable from 28 June 2025. The differences again lie in the bite of the monitoring and the size of the fines — this time with a first look at how enforcement was actually divided up once the EAA took effect.",[29,4697,4698,4709,4712,4715,4718],{},[32,4699,4700,4701,4704,4705,4708],{},"Italy. The parent law is Legge 4\u002F2004 (the \"Stanca Act\"); the WAD was transposed by D.Lgs. 106\u002F2018 and the EAA by D.Lgs. 82\u002F2022, while Article 29 of DL 76\u002F2020 (converted into L. 120\u002F2020) extended the obligation to private entities with annual turnover above €500 million. The standard is UNI CEI EN 301 549 → WCAG 2.1 AA (50 Level A\u002FAA criteria); AgID's formal guidelines of 4 March 2026 (Determinazione n. 38) still lock in 2.1, because the harmonized standard EN 301 549 v3.2.1 has not yet been formally cited for 2.2 at EU level. There is no certification-mark scheme; the output is a self-published accessibility statement (using AgID's official Allegato 1 template, due each year by 23 September). The monitoring split is finer than I expected — on the ",[25,4702,4703],{},"services"," side AgID is responsible (simplified monitoring runs automated tests each quarter on 31 of the 50 criteria using the CNR-developed MAUVE++, with in-depth monitoring by human sampling), while on the ",[25,4706,4707],{},"products"," side MIMIT (Ministero delle Imprese e del Made in Italy, renamed from MISE in 2022) handles market surveillance — a products\u002Fservices dual track the previous article didn't mention. EAA penalties run €5,000–40,000, rising to up to 5% of turnover for entities above €500 million.",[32,4710,4711],{},"Denmark. The Web Accessibility Act (webtilgængelighedsloven) transposes the WAD — originally LOV nr 692\u002F2018, now the consolidated LOV nr 429\u002F2021. The standard is EN 301 549 v3.2.1. The competent authority, Digitaliseringsstyrelsen (the Agency for Digital Government), only monitors and supervises; it issues no certificate. Its official terms are precisely \"simplified monitoring\" (forenklet monitorering, automated testing of 15 WCAG 2.1-related requirements) and \"in-depth monitoring\" (dybdegående monitorering, measured against the full EN 301 549 v3.2.1, with apps assessed by humans only). There are no fines; the mechanism is the \"order\" (påbud) — in 2024 it issued 231 orders and 76 recommendations, of which 140 concerned statement-format issues, with a public list of unresolved orders. Accessibility statements must be produced with the official WAS-Tool, which private entities are expressly barred from using. Denmark's private-sector EAA transposition details I did not verify in depth this time; noted as to-be-completed.",[32,4713,4714],{},"Poland. Two laws — the Act of 4 April 2019 on the Digital Accessibility of Websites and Mobile Applications of Public Entities (in force 23 May 2019; amended 9 March 2023 to strengthen accountability and remove the disproportionate-burden exemption list), and the Act of 26 April 2024 transposing the EAA on accessibility requirements for certain products and services (the \"Polish Accessibility Act,\" published in 2024 but actually in force from 28 June 2025). The standard follows the EU WAD \u002F EN 301 549 \u002F WCAG 2.1 AA, with the Ministry of Digital Affairs (Ministerstwo Cyfryzacji) as competent authority. I had previously assumed Poland had no concrete penalties; on checking, it does — under the 2019 law, public entities that repeatedly fail to remediate can be fined up to PLN 10,000 for website\u002Fapp problems and up to PLN 5,000 for a missing statement (imposed by the minister); under the 2024 EAA law, economic operators can be fined up to 10 times the average wage (roughly PLN 80,000–90,000), capped at 10% of annual turnover — but the imposing body is the president of PFRON (the State Fund for Rehabilitation of Disabled Persons), not the Ministry of Digital Affairs. The public and private sides are enforced by two different agencies.",[32,4716,4717],{},"Ireland. The European Union (Accessibility of Websites and Mobile Applications of Public Sector Bodies) Regulations 2020 (S.I. No. 358\u002F2020, in force 23 September 2020, transposing the WAD). The Disability Act 2005 is not the parent law but a legal basis cited (alongside the Equal Status Act 2000) when the accessibility statement links to complaint\u002Fredress channels. The standard applies the POUR principles mapped to EN 301 549, which the NDA officially states corresponds to WCAG 2.1 AA, with statements using the EU 2018\u002F1523 template. The National Disability Authority (NDA) is the statutory monitoring body under Regulation 8(1), reporting directly to the minister (not to the parent department); Regulation 8(7) expressly states that monitoring reports need not include the list of monitored bodies, so an official list is hard to obtain from outside. I found no official mark or third-party testing-body scheme. On the private side, the European Union (Accessibility Requirements of Products and Services) Regulations 2023 transpose the EAA, likewise in force from 28 June 2025, with enforcement spread across six bodies by product\u002Fservice category — the CCPC (the market-surveillance authority), ComReg, Coimisiún na Meán, the Irish Aviation Authority, the National Transport Authority, and the Central Bank of Ireland — the NDA being merely advisory here. Penalties are explicit and heavy: on summary conviction, up to a €5,000 fine or 6 months' imprisonment; on conviction on indictment, up to a €60,000 fine or 18 months' imprisonment, with company officers individually liable, and consumers and groups granted a private right of action before the courts — the heaviest private-sector penalties among this batch of new jurisdictions.",[32,4719,4720],{},"Finland. The Act on the Provision of Digital Services 306\u002F2019 (in force 1 April 2019, transposing the WAD). Per Traficom's supervision pages the standard is EN 301 549 + WCAG 2.1. Beyond the public sector, the scope also covers private-sector digital services that receive over 50% public funding, as well as specific private services such as electronic identification\u002Fpayment and utilities, transport, and postal services. The EAA transposition law's correct number is the Act on Accessibility Requirements for Certain Products 102\u002F2023, with implementing decree 179\u002F2023, in force from 20 February 2023 and applicable from 28 June 2025 (the \"568\u002F2023\" often seen online is a wrong number — I note this specifically to stop the error from spreading). The competent authority is now the digital accessibility supervision unit of Traficom (the Finnish Transport and Communications Agency) — but this power was only consolidated and transferred over from the Regional State Administrative Agency for Southern Finland (AVI) on 1 January 2025, a piece of history the previous article missed. There is no official mark scheme; the penalties are not \"unclear\" either, but a clear last resort — after administrative guidance fails, Traficom can impose a case-by-case uhkasakko (conditional fine) under the Act on Conditional Fines (Uhkasakkolaki), and for the EAA part there are additional, stricter powers such as prohibition orders and mandatory audits.",[4689,4722,4724],{"id":4723},"group-d-extended-non-eu-eea-its-own-system-one-more","Group D Extended: Non-EU \u002F EEA, Its Own System (One More)",[29,4726,4727],{},[32,4728,4729],{},"Norway. Using the Equality and Anti-Discrimination Act (Act No. 51 of 2017) together with the Regulations on Universal Design of ICT to implement the concept of \"universell utforming av IKT,\" the public sector is subject to 48 requirements and the private sector to 35, all as minimum requirements — and both sectors use the same set of rules, rather than splitting into WAD\u002FEAA tracks like the EU. The competent authority is the Authority for Universal Design of ICT (Tilsynet for universell utforming av ikt), under the Norwegian Digitalisation Agency (Digdir). There is no third-party testing-body scheme and no official mark; the authority samples and checks directly (manual + semi-automated + automated). The penalty mechanism is tvangsmulkt (a coercive fine calculated per day) — its legal basis is actually Section 36 of the parent act itself, not §6\u002F§7 of the subordinate rules; the correct process is to first issue a corrective order (pålegg) under §18 (universal-design duty) and §19a (documentation duty) of the rules, and only impose tvangsmulkt under Section 36 of the parent act if remediation misses the deadline — the section numbers in the previous article need correcting. Public-sector website statements have been mandatory on uustatus.no (Digdir's centralized platform) since 1 February 2023, while the deadline for app statements is 1 February 2026 — which, as of today, has only just taken effect. As an EEA member, whether Norway will move toward WAD\u002FEAA alignment is worth watching.",[4689,4731,4733],{"id":4732},"group-e-new-policy-guided-private-mark-model-no-dedicated-law","Group E (New): Policy-Guided + Private-Mark Model (No Dedicated Law)",[15,4735,4736],{},"This group is the real new discovery this time — there is no dedicated law like Taiwan's Article 52-2 of the People with Disabilities Rights Protection Act that \"explicitly requires obtaining a certification mark.\" Web accessibility obligations come from a general anti-discrimination law or a policy document; and the marks you can find on the market are issued by private or semi-official bodies, not the government itself.",[29,4738,4739,4742],{},[32,4740,4741],{},"Hong Kong. There is no dedicated web accessibility law; the legal basis is the Disability Discrimination Ordinance (Cap. 487). The WCAG 2.0 AA requirement for government websites and mobile apps comes from administrative policy, not legislation, and has no binding force on the private sector. The competent authority is the Digital Policy Office (DPO, established 25 July 2024 from the merger of the former Office of the Government Chief Information Officer, OGCIO, and the Efficiency Office), while the EOC enforces the Disability Discrimination Ordinance. What really needs correcting is the organizing structure of the DARS (Digital Accessibility Recognition Scheme — formerly the \"Web Accessibility Recognition Scheme,\" WARS, renamed and broadened by official announcement on 29 December 2023) recognition program: it is not \"co-run by DPO and EOC.\" The official wording is that HKIRC (the Hong Kong Internet Registration Corporation) has been the organizer since 2018, with the DPO \u002F former OGCIO merely co-organizing and the EOC only advising. The grading is also finer than the original data: Bronze (10 assessment criteria) → Silver (17) → Gold (27), with Triple Gold awarded for three consecutive years of Gold, plus a Friendly Website award (4 criteria) and an Elderly-friendly Design Award (13 criteria), and a new Designer Award category added from the 2024-2025 edition. Government sites that fail to meet the policy face no separate statutory penalty; the private sector is not penalized for not joining DARS, but if a person with a disability is denied service because of a website accessibility problem, they can still complain to the EOC or sue for damages under the Disability Discrimination Ordinance — a path that runs on ⑤ anti-discrimination litigation, an entirely separate mechanism from the DARS mark itself.",[32,4743,4744],{},"Qatar. I had originally assumed Qatar's parent-law status was \"not publicly confirmed\"; on checking, that description is out of date — the previously applicable Law No. 2 of 2004 on the Rights of Persons with Disabilities was repealed and replaced by Law No. 22 of 2025, signed by the Emir on 5 October 2025 and in force from 19 November 2025. Article 23(2) expressly requires banks and financial institutions to provide accessible digital services, with violations punishable by a QAR 50,000 fine; other violations up to QAR 100,000; and, where a serious case results in death, up to QAR 500,000 and\u002For up to 5 years' imprisonment, enforced by the Ministry of Social Development and Family (MSDF) — the only case among these eight jurisdictions to newly add statutory penalties in 2025, worth flagging. As for the mark issuer, the Mada Assistive Technology Center Qatar is explicitly a \"private institution for public benefit,\" not a government body; its website-accessibility certification comes in three public lists — Accredited Websites \u002F Mobile Apps \u002F Kiosks & ATMs. Two standard tracks need separating here: Qatar's own government digital services require WCAG 2.0 under the Government Website & e-Services Framework, while Mada's own certification uses WCAG 2.1 — the original data only noted \"WCAG 2.1 as the main standard clue,\" missing the government-policy standard.",[10,4746,4748],{"id":4747},"_3-the-public-private-mechanism-matrix-eight-new-jurisdictions","3. The Public × Private × Mechanism Matrix (Eight New Jurisdictions)",[15,4750,4751],{},"Continuing the previous article's matrix codes: ① mandatory certification, ② self-declaration + monitoring, ③ procurement \u002F supply-chain leverage, ④ market surveillance + fines, ⑤ anti-discrimination litigation, ⑥ soft law \u002F duty to make efforts.",[73,4753,4754,4767],{},[76,4755,4756],{},[79,4757,4758,4761,4764],{},[82,4759,4760],{},"Jurisdiction",[82,4762,4763],{},"Public-Sector Mechanism",[82,4765,4766],{},"Private-Sector Mechanism",[98,4768,4769,4780,4791,4802,4813,4824,4835,4846],{},[79,4770,4771,4774,4777],{},[103,4772,4773],{},"Hong Kong",[103,4775,4776],{},"⑥ Policy requirement (not legislated)",[103,4778,4779],{},"⑥ Voluntary mark (organized by HKIRC) \u002F ⑤ anti-discrimination complaint available case-by-case",[79,4781,4782,4785,4788],{},[103,4783,4784],{},"Qatar",[103,4786,4787],{},"⑥ Policy requirement (WCAG 2.0)",[103,4789,4790],{},"Private voluntary certification (Mada) + ④ emerging mandatory penalties for finance (2025)",[79,4792,4793,4796,4799],{},[103,4794,4795],{},"Italy",[103,4797,4798],{},"② AgID monitoring (services) \u002F MIMIT (products)",[103,4800,4801],{},"④ EAA (€5k–40k; up to 5% of turnover above €500M)",[79,4803,4804,4807,4810],{},[103,4805,4806],{},"Norway",[103,4808,4809],{},"②④ Single rule set; Tilsynet spot-checks + daily tvangsmulkt",[103,4811,4812],{},"②④ Same as left (public and private regulated together)",[79,4814,4815,4818,4821],{},[103,4816,4817],{},"Denmark",[103,4819,4820],{},"② Digitaliseringsstyrelsen monitoring (no fines, orders only)",[103,4822,4823],{},"To be completed (EAA details not verified this time)",[79,4825,4826,4829,4832],{},[103,4827,4828],{},"Poland",[103,4830,4831],{},"② Ministry of Digital Affairs monitoring (up to PLN 10k)",[103,4833,4834],{},"④ EAA (imposed by PFRON; up to 10% of annual turnover)",[79,4836,4837,4840,4843],{},[103,4838,4839],{},"Ireland",[103,4841,4842],{},"② NDA statutory monitoring (no direct fines)",[103,4844,4845],{},"④⑤ EAA (six-body split; up to 18 months' imprisonment + private right of action)",[79,4847,4848,4851,4854],{},[103,4849,4850],{},"Finland",[103,4852,4853],{},"② Traficom supervision (since 2025; formerly AVI)",[103,4855,4856],{},"④ EAA (recurring uhkasakko + prohibition orders)",[10,4858,4860],{"id":4859},"_4-the-biggest-misconception-this-time-organizing-certifying","4. The Biggest Misconception This Time: \"Organizing\" ≠ \"Certifying\"",[15,4862,4863,4864],{},"The previous article's Observation 4 noted that \"whether there's an official mark ≠ how strong the regime is.\" After collecting the Hong Kong and Qatar data, I want to add a further layer: ",[25,4865,4866],{},"a mark that looks government-backed doesn't mean the government is the issuer.",[15,4868,4869],{},"On Hong Kong's DARS pages you'll see the DPO's name, making it easy to mistake it for an official, government-run certification; but the actual organizer is HKIRC, with the DPO merely co-organizing and the EOC only advising. Qatar's Mada certification likewise carries a seemingly official domain and brand image, yet its legal status is a \"private institution for public benefit.\" This is a completely different level of authority from Taiwan's Article 52-2 mandatory certification (\"government agencies must obtain the certification mark by law\"), or Korea's MSIT designating three bodies to issue an official quality mark — not that private marks have no value; the assessment mechanisms and public lists that DARS and Mada have built up are actually quite solid. It's just that, when judging a mark's force, the first step should be to clearly distinguish \"who organizes, who co-organizes, and who is merely a named advisor,\" rather than treating the appearance of a government body's name as a statutory certification. This is also the first field I'll confirm when the next article takes each country's marks apart one by one.",[10,4871,4873],{"id":4872},"_5-the-first-wave-of-market-surveillance-samples-after-the-eaa-took-effect","5. The First Wave of Market-Surveillance Samples After the EAA Took Effect",[15,4875,4876],{},"28 June 2025 was the formal application date of the EAA's private-sector obligations, and Italy, Poland, Ireland, and Finland — collected this time — happen to be the first batch of jurisdictions with concrete enforcement detail available. The penalty gaps are again enormous: Poland looks to up to 10% of annual turnover; Italy fines enterprises with turnover above €500M up to 5% of turnover; Ireland takes the criminal route (up to 18 months' imprisonment, with company officers individually liable); and Finland uses a case-by-case, uncapped uhkasakko. The same EAA directive, transposed into four completely different \"sets of teeth\" by four countries — consistent with the gaps observed for Germany, France, Spain, the Netherlands, Austria, and Belgium in the previous article. The EU harmonized only the standard (EN 301 549 → WCAG 2.1 AA), not the intensity of enforcement.",[10,4878,4880],{"id":4879},"_6-updated-observations-and-trends","6. Updated Observations and Trends",[15,4882,4883],{},"Stacking the eight new jurisdictions onto the previous article's sixteen, three more points can be added:",[29,4885,4886,4892,4898],{},[32,4887,4888,4891],{},[25,4889,4890],{},"\"No dedicated law\" does not mean \"no pressure.\""," Neither Hong Kong nor Qatar has a dedicated web accessibility law, yet Hong Kong has the Disability Discrimination Ordinance for suing for damages, and Qatar's 2025 law directly imposes criminal liability and heavy fines on the financial sector — no mark scheme does not mean no legal risk.",[32,4893,4894,4897],{},[25,4895,4896],{},"The nature of the organizer determines the tier of a mark's evidentiary force."," Government mandatory certification (Taiwan, Korea, India) > government policy requirement + private voluntary mark (Hong Kong, Qatar) > pure private voluntary mark (WACA, AENOR, and the like in Germany, Spain, the Netherlands, etc.). All three can look like \"official recognition,\" but their legal force is worlds apart.",[32,4899,4900,4903],{},[25,4901,4902],{},"The EAA took effect on 28 June 2025, and the first enforcement differences have already surfaced."," Poland, Italy, Ireland, and Finland took four different penalty routes, showing that \"the same EU directive\" will grow into at least four-plus enforcement versions across the twenty-seven member states — a gap likely to keep widening as more countries' enforcement records become public.",[10,4905,4907],{"id":4906},"next-article-preview-taking-each-mark-apart","Next Article Preview: Taking Each Mark Apart",[15,4909,4910],{},"This article widened the institutional map to 24 jurisdictions, and in passing produced a method for judging a mark's credibility — first look at who organizes, co-organizes, and advises; then look at the standard version; and finally look at whether there's a publicly searchable list and an expiry date. The next article will finally return to the original plan: laying out DARS, Mada, WACA, AnySurfer, AENOR, Ilunion, Access for all, Drempelvrij, and Selo one by one, comparing whether each is a mandatory gate or a voluntary award, how many tiers it has, whether it has an expiry date, whether a complete list is searchable, and what its design looks like.",[10,4912,4613],{"id":4612},[4689,4914,4773],{"id":4915},"hong-kong",[15,4917,4918],{},[45,4919,4922],{"href":4920,"rel":4921,"target":50,"title":4622},"https:\u002F\u002Fwww.info.gov.hk\u002Fgia\u002Fgeneral\u002F202407\u002F25\u002FP2024072400394.htm",[49],"Digital Policy Office established today (HKSAR Government press release)",[15,4924,4925],{},[45,4926,4929],{"href":4927,"rel":4928,"target":50,"title":4622},"https:\u002F\u002Fwww.digitalpolicy.gov.hk\u002Fen\u002Fabout_us\u002F",[49],"Digital Policy Office — About Us",[15,4931,4932],{},[45,4933,4936],{"href":4934,"rel":4935,"target":50,"title":4622},"https:\u002F\u002Fwww.hkirc.hk\u002Fen\u002Fnews-insights\u002Fpress-release\u002Fdars\u002F",[49],"HKIRC — Digital Accessibility Recognition Scheme 2024-2025 open for applications (includes organizer \u002F co-organizer \u002F advisor wording)",[15,4938,4939],{},[45,4940,4943],{"href":4941,"rel":4942,"target":50,"title":4622},"https:\u002F\u002Fwww.hkirc.hk\u002Fen\u002Fpublic-mission\u002Fdars\u002Fdars\u002F",[49],"HKIRC — Digital Accessibility Recognition Scheme official page",[15,4945,4946],{},[45,4947,4950],{"href":4948,"rel":4949,"target":50,"title":4622},"https:\u002F\u002Fwww.digital-accessibility.hk\u002Fwp-content\u002Fuploads\u002F2024\u002F01\u002FDARS_Application_Guide-1.pdf",[49],"DARS 2024-2025 Guide to Application (PDF, assessment-tier criteria)",[4689,4952,4784],{"id":4953},"qatar",[15,4955,4956],{},[45,4957,4960],{"href":4958,"rel":4959,"target":50,"title":4622},"https:\u002F\u002Fictaccess.mada.org.qa\u002Fen\u002Faccredited-websites\u002F",[49],"Mada Digital Accessibility Portal — Accredited Websites",[15,4962,4963],{},[45,4964,4967],{"href":4965,"rel":4966,"target":50,"title":4622},"https:\u002F\u002Fmada.org.qa\u002Fpolicy-advocacy\u002F",[49],"Mada — Policy page (government Framework requires WCAG 2.0)",[15,4969,4970],{},[45,4971,4974],{"href":4972,"rel":4973,"target":50,"title":4622},"https:\u002F\u002Fwww.crowell.com\u002Fen\u002Finsights\u002Fclient-alerts\u002Fqatar-enacts-law-no-22-of-2025-on-persons-with-disabilities",[49],"Crowell & Moring — Qatar Enacts Law No. (22) of 2025 on Persons with Disabilities",[15,4976,4977],{},[45,4978,4981],{"href":4979,"rel":4980,"target":50,"title":4622},"https:\u002F\u002Fmsdf.gov.qa\u002Fen\u002Fmedia-center\u002Fnews-list\u002Fhis-highness-amir-issues-law-no-22-2025-persons-disabilities",[49],"MSDF — His Highness the Amir Issues Law No. (22) of 2025 on Persons with Disabilities",[15,4983,4984],{},[45,4985,4988],{"href":4986,"rel":4987,"target":50,"title":4622},"https:\u002F\u002Fwww.mcit.gov.qa\u002Fsites\u002Fdefault\u002Ffiles\u002Fqatar_eaccessibility_policy_en_v4.pdf",[49],"Qatar National e-Accessibility Policy 2011 (PDF, MCIT)",[4689,4990,4795],{"id":4991},"italy",[15,4993,4994],{},[45,4995,4998],{"href":4996,"rel":4997,"target":50,"title":4622},"https:\u002F\u002Fwww.gazzettaufficiale.it\u002Feli\u002Fid\u002F2022\u002F07\u002F01\u002F22G00089\u002FSG",[49],"D.Lgs. 82\u002F2022 (EAA transposition)",[15,5000,5001],{},[45,5002,5005],{"href":5003,"rel":5004,"target":50,"title":4622},"https:\u002F\u002Fwww.gazzettaufficiale.it\u002Feli\u002Fid\u002F2018\u002F09\u002F11\u002F18G00133\u002Fsg",[49],"D.Lgs. 106\u002F2018 (WAD transposition)",[15,5007,5008],{},[45,5009,5012],{"href":5010,"rel":5011,"target":50,"title":4622},"https:\u002F\u002Fwww.agid.gov.it\u002Fsites\u002Fagid\u002Ffiles\u002F2026-03\u002FLinee_Guida_accessibilit%C3%A0_dei_servizi_(EAA).pdf",[49],"AgID Linee Guida accessibilità dei servizi (EAA, March 2026)",[15,5014,5015],{},[45,5016,5019],{"href":5017,"rel":5018,"target":50,"title":4622},"https:\u002F\u002Fwww.agid.gov.it\u002Fsites\u002Fagid\u002Ffiles\u002F2025-04\u002FAllegato%201%20-%20Modello_di_dichiarazione_accessibilit%C3%A0.pdf",[49],"AgID — accessibility-statement template Allegato 1",[15,5021,5022],{},[45,5023,5026],{"href":5024,"rel":5025,"target":50,"title":4622},"https:\u002F\u002Fwww.cnr.it\u002Fit\u002Fnews\u002F11847\u002Fmonitoraggio-nazionale-automatico-dell-accessibilita-dei-siti-web-delle-pubbliche-amministrazioni-con-mauve",[49],"CNR — MAUVE monitoring tool",[15,5028,5029],{},[45,5030,5033],{"href":5031,"rel":5032,"target":50,"title":4622},"https:\u002F\u002Fmonitoraggio.accessibilita.agid.gov.it\u002Fmonitoraggio-semplificato",[49],"AgID simplified-monitoring platform",[15,5035,5036],{},[45,5037,5040],{"href":5038,"rel":5039,"target":50,"title":4622},"https:\u002F\u002Fwww.mimit.gov.it\u002Fit\u002Fmercato-e-consumatori\u002Fsicurezza-prodotti",[49],"MIMIT — product safety and market surveillance",[4689,5042,4806],{"id":5043},"norway",[15,5045,5046],{},[45,5047,5050],{"href":5048,"rel":5049,"target":50,"title":4622},"https:\u002F\u002Flovdata.no\u002Fdokument\u002FNL\u002Flov\u002F2017-06-16-51",[49],"Likestillings- og diskrimineringsloven (parent act, full text incl. §36)",[15,5052,5053],{},[45,5054,5057],{"href":5055,"rel":5056,"target":50,"title":4622},"https:\u002F\u002Flovdata.no\u002Fdokument\u002FSF\u002Fforskrift\u002F2013-06-21-732",[49],"Forskrift om universell utforming av IKT-løsninger",[15,5059,5060],{},[45,5061,5064],{"href":5062,"rel":5063,"target":50,"title":4622},"https:\u002F\u002Fwww.uutilsynet.no\u002F",[49],"uutilsynet.no — official supervisory authority",[15,5066,5067],{},[45,5068,5071],{"href":5069,"rel":5070,"target":50,"title":4622},"https:\u002F\u002Fwww.uutilsynet.no\u002Ftilgjengelighetserklaering\u002Fmanglende-tilgjengelighetserklaering-kan-fore-til-dagmulkt\u002F1673",[49],"uutilsynet — how a missing statement can lead to a daily fine",[15,5073,5074],{},[45,5075,5078],{"href":5076,"rel":5077,"target":50,"title":4622},"https:\u002F\u002Fuustatus.no\u002Fnb",[49],"uustatus.no — central accessibility-statement platform",[4689,5080,4817],{"id":5081},"denmark",[15,5083,5084],{},[45,5085,5088],{"href":5086,"rel":5087,"target":50,"title":4622},"https:\u002F\u002Fdigst.dk\u002Ftilsyn\u002Fwebtilgaengelighed\u002Fmonitorering-og-tilsyn\u002Fdybdegaaende-monitoreringer\u002F",[49],"Digitaliseringsstyrelsen — in-depth monitoring",[15,5090,5091],{},[45,5092,5095],{"href":5093,"rel":5094,"target":50,"title":4622},"https:\u002F\u002Fdigst.dk\u002Ftilsyn\u002Fwebtilgaengelighed\u002Fmonitorering-og-tilsyn\u002Fforenklede-monitoreringer\u002F",[49],"Digitaliseringsstyrelsen — simplified monitoring",[15,5097,5098],{},[45,5099,5102],{"href":5100,"rel":5101,"target":50,"title":4622},"https:\u002F\u002Fdigst.dk\u002Ftilsyn\u002Fwebtilgaengelighed\u002Fresultater\u002Fudestaaende-paabud\u002F",[49],"Digitaliseringsstyrelsen — list of unresolved orders",[15,5104,5105],{},[45,5106,5109],{"href":5107,"rel":5108,"target":50,"title":4622},"https:\u002F\u002Fwww.retsinformation.dk\u002Feli\u002Flta\u002F2021\u002F429",[49],"LOV nr 429 af 16\u002F03\u002F2021 (current consolidated version)",[15,5111,5112],{},[45,5113,5116],{"href":5114,"rel":5115,"target":50,"title":4622},"https:\u002F\u002Fedit.was.digst.dk\u002Fda-DK",[49],"WAS-Tool official portal",[4689,5118,4828],{"id":5119},"poland",[15,5121,5122],{},[45,5123,5126],{"href":5124,"rel":5125,"target":50,"title":4622},"https:\u002F\u002Fisap.sejm.gov.pl\u002Fisap.nsf\u002FDocDetails.xsp?id=WDU20190000848",[49],"Ustawa z dnia 4 kwietnia 2019 r. (ISAP)",[15,5128,5129],{},[45,5130,5133],{"href":5131,"rel":5132,"target":50,"title":4622},"https:\u002F\u002Fisap.sejm.gov.pl\u002Fisap.nsf\u002FDocDetails.xsp?id=WDU20240000731",[49],"Ustawa z dnia 26 kwietnia 2024 r. (Polish Accessibility Act \u002F EAA transposition, ISAP)",[15,5135,5136],{},[45,5137,5140],{"href":5138,"rel":5139,"target":50,"title":4622},"https:\u002F\u002Fwww.pfron.org.pl\u002Faktualnosci\u002Fszczegoly-aktualnosci\u002Fnews\u002Fustawa-o-dostepnosci\u002F",[49],"PFRON — Accessibility Act explainer (EAA imposing authority)",[15,5142,5143],{},[45,5144,5147],{"href":5145,"rel":5146,"target":50,"title":4622},"https:\u002F\u002Fwww.gov.pl\u002Fweb\u002Fcyfryzacja\u002Fdostepnosc-cyfrowa",[49],"Poland Ministry of Digital Affairs — digital accessibility",[4689,5149,4839],{"id":5150},"ireland",[15,5152,5153],{},[45,5154,5157],{"href":5155,"rel":5156,"target":50,"title":4622},"https:\u002F\u002Fwww.irishstatutebook.ie\u002Feli\u002F2020\u002Fsi\u002F358\u002Fmade\u002Fen\u002Fprint",[49],"S.I. No. 358\u002F2020",[15,5159,5160],{},[45,5161,5164],{"href":5162,"rel":5163,"target":50,"title":4622},"https:\u002F\u002Fnda.ie\u002Fmonitoring\u002Feu-web-accessibility-directive",[49],"NDA — EU Web Accessibility Directive monitoring",[15,5166,5167],{},[45,5168,5171],{"href":5169,"rel":5170,"target":50,"title":4622},"https:\u002F\u002Fwww.mhc.ie\u002Flatest\u002Finsights\u002Feuropean-accessibility-act-implemented-into-irish-law",[49],"Mason Hayes & Curran — European Accessibility Act implemented into Irish law",[15,5173,5174],{},[45,5175,5178],{"href":5176,"rel":5177,"target":50,"title":4622},"https:\u002F\u002Fwww.dlapiper.com\u002Fen-us\u002Finsights\u002Fpublications\u002F2025\u002F10\u002Fnavigating-the-irish-accessibility-regulations",[49],"DLA Piper — Irish accessibility regulations penalty detail",[4689,5180,4850],{"id":5181},"finland",[15,5183,5184],{},[45,5185,5188],{"href":5186,"rel":5187,"target":50,"title":4622},"https:\u002F\u002Fwww.saavutettavuusvaatimukset.fi\u002Fen\u002Ftasks-supervisory-authority-0",[49],"Traficom — supervisory-authority tasks (incl. uhkasakko)",[15,5190,5191],{},[45,5192,5195],{"href":5193,"rel":5194,"target":50,"title":4622},"https:\u002F\u002Fwww.saavutettavuusvaatimukset.fi\u002Fen\u002Frequirements-act-provision-digital-services\u002Frequirements-act-provision-digital-services",[49],"Laki digitaalisten palvelujen tarjoamisesta 306\u002F2019",[15,5197,5198],{},[45,5199,5202],{"href":5200,"rel":5201,"target":50,"title":4622},"https:\u002F\u002Ffinlex.fi\u002Fen\u002Flegislation\u002Fcollection\u002F2023\u002F102",[49],"Finlex — 102\u002F2023 (correct EAA Finnish transposition number)",[15,5204,5205],{},[45,5206,5209],{"href":5207,"rel":5208,"target":50,"title":4622},"https:\u002F\u002Fwww.traficom.fi\u002Fen\u002Ftraficom\u002Faccessibility\u002Fnew-accessibility-requirements",[49],"Traficom — new accessibility requirements",[15,5211,5212],{},"--",[15,5214,5215],{},"Information compiled as of July 2026; it may contain errors, and corrections are welcome. The next article will take each country's certification marks apart one by one.",{"title":2284,"searchDepth":2285,"depth":2285,"links":5217},[5218,5219,5220,5221,5222,5223,5224,5225],{"id":4672,"depth":2288,"text":4673},{"id":4686,"depth":2288,"text":4687},{"id":4747,"depth":2288,"text":4748},{"id":4859,"depth":2288,"text":4860},{"id":4872,"depth":2288,"text":4873},{"id":4879,"depth":2288,"text":4880},{"id":4906,"depth":2288,"text":4907},{"id":4612,"depth":2288,"text":4613},"2026-07-17","The previous article surveyed 16 jurisdictions and I meant to go straight into a deep comparison of certification marks — but while collecting data on Hong Kong and Qatar, I found that many 'government marks' I'd assumed were official are actually run by private bodies, with the government merely co-organizing. So I widened the map to 24 jurisdictions to finish the institutional groundwork first.",{},"\u002Fen\u002Fblog\u002Fa11y-world-rules-part2",{"title":4653,"description":5227},"en\u002Fblog\u002Fa11y-world-rules-part2",[2318,5233,5234],"A11Y","AccessibilityBadge","qLtFLDGFj5jd0cNfND_9Xer-ajUxPyI79hKYAMqOGTk",{"id":4,"title":5,"body":5237,"date":2303,"description":2304,"draft":2305,"extension":2306,"meta":7059,"navigation":2308,"ogImage":2309,"path":2310,"seo":7060,"stem":2312,"tags":7061,"translationKey":2320,"updatedAt":2321,"__hash__":2322},{"type":7,"value":5238,"toc":7042},[5239,5241,5243,5245,5249,5255,5262,5272,5274,5462,5464,5660,5662,5806,5808,6064,6066,6174,6176,6264,6266,6404,6406,6540,6542,6666,6668,6864,6866,6868,6932,6934,6936,6980,6991,6993],[10,5240,13],{"id":12},[15,5242,17],{},[10,5244,21],{"id":20},[15,5246,5247],{},[25,5248,27],{},[29,5250,5251,5253],{},[32,5252,34],{},[32,5254,37],{},[15,5256,5257,43,5259,53],{},[25,5258,42],{},[45,5260,52],{"href":47,"rel":5261,"target":50,"title":51},[49],[29,5263,5264,5266,5268,5270],{},[32,5265,58],{},[32,5267,61],{},[32,5269,64],{},[32,5271,67],{},[10,5273,71],{"id":70},[73,5275,5276,5290],{},[76,5277,5278],{},[79,5279,5280,5282,5284,5286,5288],{},[82,5281,84],{},[82,5283,87],{},[82,5285,90],{},[82,5287,93],{},[82,5289,96],{},[98,5291,5292,5308,5324,5340,5356,5372,5392,5420,5438],{},[79,5293,5294,5298,5300,5304,5306],{},[103,5295,5296],{},[106,5297,108],{},[103,5299,111],{},[103,5301,5302],{},[106,5303,116],{},[103,5305,119],{},[103,5307,122],{},[79,5309,5310,5314,5316,5320,5322],{},[103,5311,5312],{},[106,5313,129],{},[103,5315,132],{},[103,5317,5318],{},[106,5319,137],{},[103,5321,140],{},[103,5323,122],{},[79,5325,5326,5328,5330,5336,5338],{},[103,5327,147],{},[103,5329,150],{},[103,5331,5332,156,5334],{},[106,5333,155],{},[106,5335,159],{},[103,5337,140],{},[103,5339,122],{},[79,5341,5342,5344,5346,5352,5354],{},[103,5343,168],{},[103,5345,171],{},[103,5347,5348,156,5350],{},[106,5349,176],{},[106,5351,179],{},[103,5353,119],{},[103,5355,122],{},[79,5357,5358,5362,5364,5368,5370],{},[103,5359,5360],{},[106,5361,190],{},[103,5363,193],{},[103,5365,5366],{},[106,5367,198],{},[103,5369,119],{},[103,5371,203],{},[79,5373,5374,5380,5382,5388,5390],{},[103,5375,5376,211,5378],{},[106,5377,210],{},[106,5379,214],{},[103,5381,217],{},[103,5383,5384,211,5386],{},[106,5385,222],{},[106,5387,225],{},[103,5389,119],{},[103,5391,122],{},[79,5393,5394,5402,5410,5416,5418],{},[103,5395,234,5396,211,5398,211,5400,244],{},[106,5397,237],{},[106,5399,240],{},[106,5401,243],{},[103,5403,247,5404,251,5406,251,5408,258],{},[106,5405,250],{},[106,5407,254],{},[106,5409,257],{},[103,5411,5412,264,5414],{},[106,5413,263],{},[106,5415,267],{},[103,5417,270],{},[103,5419,122],{},[79,5421,5422,5426,5430,5434,5436],{},[103,5423,5424],{},[106,5425,279],{},[103,5427,282,5428,286],{},[106,5429,285],{},[103,5431,5432],{},[106,5433,291],{},[103,5435,140],{},[103,5437,122],{},[79,5439,5440,5442,5454,5458,5460],{},[103,5441,300],{},[103,5443,303,5444,307,5446,311,5448,315,5450,311,5452,322],{},[106,5445,306],{},[106,5447,310],{},[106,5449,314],{},[106,5451,318],{},[106,5453,321],{},[103,5455,5456],{},[106,5457,327],{},[103,5459,270],{},[103,5461,122],{},[10,5463,335],{"id":334},[73,5465,5466,5480],{},[76,5467,5468],{},[79,5469,5470,5472,5474,5476,5478],{},[82,5471,84],{},[82,5473,87],{},[82,5475,90],{},[82,5477,93],{},[82,5479,96],{},[98,5481,5482,5498,5514,5536,5554,5570,5588,5606,5624,5640],{},[79,5483,5484,5488,5490,5494,5496],{},[103,5485,5486],{},[106,5487,360],{},[103,5489,363],{},[103,5491,5492],{},[106,5493,368],{},[103,5495,140],{},[103,5497,122],{},[79,5499,5500,5504,5506,5510,5512],{},[103,5501,5502],{},[106,5503,379],{},[103,5505,382],{},[103,5507,5508],{},[106,5509,387],{},[103,5511,140],{},[103,5513,122],{},[79,5515,5516,5522,5528,5532,5534],{},[103,5517,5518,211,5520],{},[106,5519,398],{},[106,5521,401],{},[103,5523,404,5524,407,5526,410],{},[106,5525,401],{},[106,5527,398],{},[103,5529,5530],{},[106,5531,415],{},[103,5533,140],{},[103,5535,122],{},[79,5537,5538,5542,5546,5550,5552],{},[103,5539,5540,427],{},[106,5541,426],{},[103,5543,5544,433],{},[106,5545,432],{},[103,5547,5548],{},[106,5549,438],{},[103,5551,140],{},[103,5553,122],{},[79,5555,5556,5560,5562,5566,5568],{},[103,5557,5558],{},[106,5559,449],{},[103,5561,452],{},[103,5563,5564],{},[106,5565,457],{},[103,5567,140],{},[103,5569,122],{},[79,5571,5572,5578,5580,5584,5586],{},[103,5573,5574,211,5576],{},[106,5575,468],{},[106,5577,471],{},[103,5579,474],{},[103,5581,5582],{},[106,5583,479],{},[103,5585,140],{},[103,5587,122],{},[79,5589,5590,5596,5598,5602,5604],{},[103,5591,5592,211,5594],{},[106,5593,490],{},[106,5595,493],{},[103,5597,496],{},[103,5599,5600],{},[106,5601,501],{},[103,5603,270],{},[103,5605,122],{},[79,5607,5608,5614,5616,5620,5622],{},[103,5609,5610,211,5612],{},[106,5611,512],{},[106,5613,515],{},[103,5615,518],{},[103,5617,5618],{},[106,5619,523],{},[103,5621,119],{},[103,5623,122],{},[79,5625,5626,5630,5632,5636,5638],{},[103,5627,5628],{},[106,5629,534],{},[103,5631,537],{},[103,5633,5634],{},[106,5635,542],{},[103,5637,545],{},[103,5639,203],{},[79,5641,5642,5644,5652,5656,5658],{},[103,5643,552],{},[103,5645,5646,211,5648,211,5650,564],{},[106,5647,557],{},[106,5649,560],{},[106,5651,563],{},[103,5653,5654],{},[106,5655,569],{},[103,5657,119],{},[103,5659,203],{},[10,5661,577],{"id":576},[73,5663,5664,5678],{},[76,5665,5666],{},[79,5667,5668,5670,5672,5674,5676],{},[82,5669,84],{},[82,5671,87],{},[82,5673,90],{},[82,5675,93],{},[82,5677,96],{},[98,5679,5680,5702,5720,5736,5752,5770,5790],{},[79,5681,5682,5686,5694,5698,5700],{},[103,5683,600,5684,604],{},[106,5685,603],{},[103,5687,5688,610,5690,613,5692,617],{},[106,5689,609],{},[106,5691,603],{},[106,5693,616],{},[103,5695,5696],{},[106,5697,622],{},[103,5699,140],{},[103,5701,122],{},[79,5703,5704,5708,5712,5716,5718],{},[103,5705,5706],{},[106,5707,633],{},[103,5709,636,5710,639],{},[106,5711,603],{},[103,5713,5714],{},[106,5715,644],{},[103,5717,140],{},[103,5719,122],{},[79,5721,5722,5726,5728,5732,5734],{},[103,5723,5724],{},[106,5725,655],{},[103,5727,658],{},[103,5729,5730],{},[106,5731,663],{},[103,5733,119],{},[103,5735,203],{},[79,5737,5738,5742,5744,5748,5750],{},[103,5739,5740],{},[106,5741,674],{},[103,5743,677],{},[103,5745,5746],{},[106,5747,682],{},[103,5749,140],{},[103,5751,122],{},[79,5753,5754,5758,5762,5766,5768],{},[103,5755,5756],{},[106,5757,693],{},[103,5759,696,5760,700],{},[106,5761,699],{},[103,5763,5764],{},[106,5765,705],{},[103,5767,140],{},[103,5769,122],{},[79,5771,5772,5778,5780,5786,5788],{},[103,5773,5774,211,5776],{},[106,5775,716],{},[106,5777,719],{},[103,5779,722],{},[103,5781,5782,156,5784],{},[106,5783,727],{},[106,5785,730],{},[103,5787,270],{},[103,5789,122],{},[79,5791,5792,5794,5798,5802,5804],{},[103,5793,739],{},[103,5795,5796,745],{},[106,5797,744],{},[103,5799,5800],{},[106,5801,750],{},[103,5803,140],{},[103,5805,122],{},[10,5807,758],{"id":757},[73,5809,5810,5824],{},[76,5811,5812],{},[79,5813,5814,5816,5818,5820,5822],{},[82,5815,84],{},[82,5817,87],{},[82,5819,90],{},[82,5821,93],{},[82,5823,96],{},[98,5825,5826,5848,5864,5880,5896,5912,5928,5944,5960,5982,5998,6014,6030,6048],{},[79,5827,5828,5834,5840,5844,5846],{},[103,5829,5830,211,5832],{},[106,5831,783],{},[106,5833,786],{},[103,5835,5836,792,5838,795],{},[106,5837,791],{},[106,5839,786],{},[103,5841,5842],{},[106,5843,800],{},[103,5845,270],{},[103,5847,122],{},[79,5849,5850,5854,5856,5860,5862],{},[103,5851,5852],{},[106,5853,811],{},[103,5855,814],{},[103,5857,5858],{},[106,5859,819],{},[103,5861,140],{},[103,5863,122],{},[79,5865,5866,5870,5872,5876,5878],{},[103,5867,5868],{},[106,5869,830],{},[103,5871,833],{},[103,5873,5874],{},[106,5875,838],{},[103,5877,270],{},[103,5879,122],{},[79,5881,5882,5886,5888,5892,5894],{},[103,5883,5884],{},[106,5885,849],{},[103,5887,852],{},[103,5889,5890],{},[106,5891,857],{},[103,5893,140],{},[103,5895,122],{},[79,5897,5898,5902,5904,5908,5910],{},[103,5899,5900],{},[106,5901,868],{},[103,5903,871],{},[103,5905,5906],{},[106,5907,876],{},[103,5909,270],{},[103,5911,122],{},[79,5913,5914,5918,5920,5924,5926],{},[103,5915,5916],{},[106,5917,887],{},[103,5919,890],{},[103,5921,5922],{},[106,5923,895],{},[103,5925,140],{},[103,5927,122],{},[79,5929,5930,5934,5936,5940,5942],{},[103,5931,5932],{},[106,5933,906],{},[103,5935,909],{},[103,5937,5938],{},[106,5939,914],{},[103,5941,270],{},[103,5943,122],{},[79,5945,5946,5950,5952,5956,5958],{},[103,5947,5948],{},[106,5949,925],{},[103,5951,928],{},[103,5953,5954],{},[106,5955,933],{},[103,5957,119],{},[103,5959,122],{},[79,5961,5962,5968,5972,5978,5980],{},[103,5963,5964,945,5966,244],{},[106,5965,944],{},[106,5967,948],{},[103,5969,951,5970,954],{},[106,5971,944],{},[103,5973,5974,960,5976,244],{},[106,5975,959],{},[106,5977,963],{},[103,5979,140],{},[103,5981,122],{},[79,5983,5984,5988,5990,5994,5996],{},[103,5985,5986],{},[106,5987,974],{},[103,5989,977],{},[103,5991,5992],{},[106,5993,982],{},[103,5995,119],{},[103,5997,203],{},[79,5999,6000,6004,6006,6010,6012],{},[103,6001,6002],{},[106,6003,993],{},[103,6005,996],{},[103,6007,6008],{},[106,6009,1001],{},[103,6011,140],{},[103,6013,122],{},[79,6015,6016,6020,6022,6026,6028],{},[103,6017,6018,1013],{},[106,6019,1012],{},[103,6021,1016],{},[103,6023,6024],{},[106,6025,1021],{},[103,6027,270],{},[103,6029,122],{},[79,6031,6032,6036,6040,6044,6046],{},[103,6033,6034],{},[106,6035,1032],{},[103,6037,1035,6038,1039],{},[106,6039,1038],{},[103,6041,6042],{},[106,6043,1044],{},[103,6045,119],{},[103,6047,203],{},[79,6049,6050,6054,6056,6060,6062],{},[103,6051,6052],{},[106,6053,1055],{},[103,6055,1058],{},[103,6057,6058],{},[106,6059,1063],{},[103,6061,119],{},[103,6063,203],{},[10,6065,1071],{"id":1070},[73,6067,6068,6082],{},[76,6069,6070],{},[79,6071,6072,6074,6076,6078,6080],{},[82,6073,84],{},[82,6075,87],{},[82,6077,90],{},[82,6079,93],{},[82,6081,96],{},[98,6083,6084,6100,6122,6140,6156],{},[79,6085,6086,6088,6092,6096,6098],{},[103,6087,1094],{},[103,6089,1097,6090],{},[106,6091,1100],{},[103,6093,6094],{},[106,6095,1105],{},[103,6097,119],{},[103,6099,122],{},[79,6101,6102,6108,6114,6118,6120],{},[103,6103,6104,211,6106],{},[106,6105,1116],{},[106,6107,1119],{},[103,6109,1122,6110,1126,6112,1130],{},[106,6111,1125],{},[106,6113,1129],{},[103,6115,6116],{},[106,6117,1135],{},[103,6119,270],{},[103,6121,122],{},[79,6123,6124,6128,6132,6136,6138],{},[103,6125,6126],{},[106,6127,1146],{},[103,6129,1149,6130,1153],{},[106,6131,1152],{},[103,6133,6134],{},[106,6135,1158],{},[103,6137,270],{},[103,6139,122],{},[79,6141,6142,6146,6148,6152,6154],{},[103,6143,6144],{},[106,6145,1169],{},[103,6147,1172],{},[103,6149,6150],{},[106,6151,1177],{},[103,6153,140],{},[103,6155,122],{},[79,6157,6158,6162,6166,6170,6172],{},[103,6159,6160],{},[106,6161,1188],{},[103,6163,1191,6164,1195],{},[106,6165,1194],{},[103,6167,6168],{},[106,6169,1200],{},[103,6171,140],{},[103,6173,122],{},[10,6175,1208],{"id":1207},[73,6177,6178,6192],{},[76,6179,6180],{},[79,6181,6182,6184,6186,6188,6190],{},[82,6183,84],{},[82,6185,87],{},[82,6187,90],{},[82,6189,93],{},[82,6191,96],{},[98,6193,6194,6210,6228,6246],{},[79,6195,6196,6200,6202,6206,6208],{},[103,6197,6198],{},[106,6199,1233],{},[103,6201,1236],{},[103,6203,6204],{},[106,6205,1241],{},[103,6207,119],{},[103,6209,122],{},[79,6211,6212,6218,6220,6224,6226],{},[103,6213,1250,6214,945,6216,244],{},[106,6215,1253],{},[106,6217,1256],{},[103,6219,1259],{},[103,6221,6222],{},[106,6223,1264],{},[103,6225,119],{},[103,6227,122],{},[79,6229,6230,6236,6238,6242,6244],{},[103,6231,6232,1276,6234,244],{},[106,6233,1275],{},[106,6235,1279],{},[103,6237,1282],{},[103,6239,6240],{},[106,6241,1287],{},[103,6243,119],{},[103,6245,122],{},[79,6247,6248,6252,6256,6260,6262],{},[103,6249,6250],{},[106,6251,1298],{},[103,6253,1301,6254,1305],{},[106,6255,1304],{},[103,6257,6258],{},[106,6259,1310],{},[103,6261,140],{},[103,6263,122],{},[10,6265,1318],{"id":1317},[73,6267,6268,6282],{},[76,6269,6270],{},[79,6271,6272,6274,6276,6278,6280],{},[82,6273,84],{},[82,6275,87],{},[82,6277,90],{},[82,6279,93],{},[82,6281,96],{},[98,6283,6284,6306,6322,6338,6354,6370,6386],{},[79,6285,6286,6288,6298,6302,6304],{},[103,6287,1341],{},[103,6289,1344,6290,251,6292,1351,6294,156,6296,1358],{},[106,6291,1347],{},[106,6293,1350],{},[106,6295,1354],{},[106,6297,1357],{},[103,6299,6300],{},[106,6301,1363],{},[103,6303,140],{},[103,6305,122],{},[79,6307,6308,6312,6314,6318,6320],{},[103,6309,6310],{},[106,6311,1194],{},[103,6313,1376],{},[103,6315,6316],{},[106,6317,1381],{},[103,6319,140],{},[103,6321,122],{},[79,6323,6324,6328,6330,6334,6336],{},[103,6325,6326],{},[106,6327,1392],{},[103,6329,1395],{},[103,6331,6332],{},[106,6333,1400],{},[103,6335,270],{},[103,6337,122],{},[79,6339,6340,6344,6346,6350,6352],{},[103,6341,6342],{},[106,6343,1411],{},[103,6345,1414],{},[103,6347,6348],{},[106,6349,1419],{},[103,6351,140],{},[103,6353,122],{},[79,6355,6356,6360,6362,6366,6368],{},[103,6357,6358,1431],{},[106,6359,1430],{},[103,6361,1434],{},[103,6363,6364],{},[106,6365,1439],{},[103,6367,140],{},[103,6369,122],{},[79,6371,6372,6376,6378,6382,6384],{},[103,6373,1448,6374],{},[106,6375,1451],{},[103,6377,1454],{},[103,6379,6380],{},[106,6381,1459],{},[103,6383,270],{},[103,6385,122],{},[79,6387,6388,6390,6396,6400,6402],{},[103,6389,1468],{},[103,6391,1471,6392,315,6394,1478],{},[106,6393,1474],{},[106,6395,1477],{},[103,6397,6398],{},[106,6399,1483],{},[103,6401,119],{},[103,6403,122],{},[10,6405,1491],{"id":1490},[73,6407,6408,6422],{},[76,6409,6410],{},[79,6411,6412,6414,6416,6418,6420],{},[82,6413,84],{},[82,6415,87],{},[82,6417,90],{},[82,6419,93],{},[82,6421,96],{},[98,6423,6424,6440,6456,6472,6490,6506,6524],{},[79,6425,6426,6430,6432,6436,6438],{},[103,6427,1514,6428],{},[106,6429,1517],{},[103,6431,1520],{},[103,6433,6434],{},[106,6435,1525],{},[103,6437,140],{},[103,6439,122],{},[79,6441,6442,6446,6448,6452,6454],{},[103,6443,6444],{},[106,6445,1536],{},[103,6447,1539],{},[103,6449,6450],{},[106,6451,1544],{},[103,6453,270],{},[103,6455,122],{},[79,6457,6458,6462,6464,6468,6470],{},[103,6459,6460],{},[106,6461,1555],{},[103,6463,1558],{},[103,6465,6466],{},[106,6467,1563],{},[103,6469,140],{},[103,6471,122],{},[79,6473,6474,6478,6482,6486,6488],{},[103,6475,6476],{},[106,6477,1574],{},[103,6479,1577,6480,1581],{},[106,6481,1580],{},[103,6483,6484],{},[106,6485,1586],{},[103,6487,140],{},[103,6489,122],{},[79,6491,6492,6496,6498,6502,6504],{},[103,6493,6494],{},[106,6495,1597],{},[103,6497,1600],{},[103,6499,6500],{},[106,6501,1605],{},[103,6503,270],{},[103,6505,122],{},[79,6507,6508,6514,6516,6520,6522],{},[103,6509,6510,211,6512],{},[106,6511,1616],{},[106,6513,1619],{},[103,6515,1622],{},[103,6517,6518],{},[106,6519,1627],{},[103,6521,270],{},[103,6523,122],{},[79,6525,6526,6530,6532,6536,6538],{},[103,6527,6528],{},[106,6529,1638],{},[103,6531,1641],{},[103,6533,6534],{},[106,6535,1646],{},[103,6537,140],{},[103,6539,122],{},[10,6541,1654],{"id":1653},[73,6543,6544,6558],{},[76,6545,6546],{},[79,6547,6548,6550,6552,6554,6556],{},[82,6549,84],{},[82,6551,87],{},[82,6553,90],{},[82,6555,93],{},[82,6557,96],{},[98,6559,6560,6580,6596,6618,6634,6650],{},[79,6561,6562,6570,6572,6576,6578],{},[103,6563,6564,211,6566,211,6568],{},[106,6565,1679],{},[106,6567,1682],{},[106,6569,1685],{},[103,6571,1688],{},[103,6573,6574],{},[106,6575,1693],{},[103,6577,270],{},[103,6579,122],{},[79,6581,6582,6586,6588,6592,6594],{},[103,6583,1702,6584],{},[106,6585,1705],{},[103,6587,1708],{},[103,6589,6590],{},[106,6591,1713],{},[103,6593,140],{},[103,6595,122],{},[79,6597,6598,6604,6610,6614,6616],{},[103,6599,6600,211,6602],{},[106,6601,1724],{},[106,6603,1727],{},[103,6605,1730,6606,251,6608,1736],{},[106,6607,285],{},[106,6609,1735],{},[103,6611,6612],{},[106,6613,1741],{},[103,6615,119],{},[103,6617,122],{},[79,6619,6620,6624,6626,6630,6632],{},[103,6621,6622],{},[106,6623,1752],{},[103,6625,1755],{},[103,6627,6628],{},[106,6629,1760],{},[103,6631,119],{},[103,6633,122],{},[79,6635,6636,6640,6642,6646,6648],{},[103,6637,6638],{},[106,6639,1771],{},[103,6641,1774],{},[103,6643,6644],{},[106,6645,1779],{},[103,6647,119],{},[103,6649,203],{},[79,6651,6652,6656,6658,6662,6664],{},[103,6653,6654],{},[106,6655,1790],{},[103,6657,1793],{},[103,6659,6660],{},[106,6661,1798],{},[103,6663,119],{},[103,6665,203],{},[10,6667,1806],{"id":1805},[73,6669,6670,6684],{},[76,6671,6672],{},[79,6673,6674,6676,6678,6680,6682],{},[82,6675,84],{},[82,6677,87],{},[82,6679,90],{},[82,6681,93],{},[82,6683,96],{},[98,6685,6686,6700,6716,6732,6748,6768,6784,6808,6828,6846],{},[79,6687,6688,6690,6692,6696,6698],{},[103,6689,1829],{},[103,6691,1832],{},[103,6693,6694],{},[106,6695,1837],{},[103,6697,140],{},[103,6699,122],{},[79,6701,6702,6706,6708,6712,6714],{},[103,6703,6704],{},[106,6705,1848],{},[103,6707,1851],{},[103,6709,6710],{},[106,6711,1848],{},[103,6713,140],{},[103,6715,122],{},[79,6717,6718,6722,6724,6728,6730],{},[103,6719,6720],{},[106,6721,1866],{},[103,6723,1869],{},[103,6725,6726],{},[106,6727,1874],{},[103,6729,140],{},[103,6731,122],{},[79,6733,6734,6738,6740,6744,6746],{},[103,6735,6736],{},[106,6737,1885],{},[103,6739,1888],{},[103,6741,6742],{},[106,6743,1893],{},[103,6745,119],{},[103,6747,122],{},[79,6749,6750,6752,6760,6764,6766],{},[103,6751,1902],{},[103,6753,6754,251,6756,251,6758,1914],{},[106,6755,1907],{},[106,6757,1910],{},[106,6759,1913],{},[103,6761,6762],{},[106,6763,1919],{},[103,6765,140],{},[103,6767,122],{},[79,6769,6770,6774,6776,6780,6782],{},[103,6771,6772],{},[106,6773,1930],{},[103,6775,1933],{},[103,6777,6778],{},[106,6779,1938],{},[103,6781,140],{},[103,6783,122],{},[79,6785,6786,6790,6800,6804,6806],{},[103,6787,6788],{},[106,6789,1949],{},[103,6791,1952,6792,251,6794,1959,6796,1963,6798,1966],{},[106,6793,1955],{},[106,6795,1958],{},[106,6797,1962],{},[106,6799,1930],{},[103,6801,6802],{},[106,6803,1971],{},[103,6805,119],{},[103,6807,203],{},[79,6809,6810,6814,6820,6824,6826],{},[103,6811,6812],{},[106,6813,1982],{},[103,6815,1985,6816,1989,6818],{},[106,6817,1988],{},[106,6819,1988],{},[103,6821,6822],{},[106,6823,1996],{},[103,6825,119],{},[103,6827,203],{},[79,6829,6830,6834,6836,6842,6844],{},[103,6831,2005,6832,244],{},[106,6833,2008],{},[103,6835,2011],{},[103,6837,6838,2017,6840,244],{},[106,6839,2016],{},[106,6841,2020],{},[103,6843,270],{},[103,6845,122],{},[79,6847,6848,6854,6856,6860,6862],{},[103,6849,6850,211,6852],{},[106,6851,2031],{},[106,6853,2034],{},[103,6855,2037],{},[103,6857,6858],{},[106,6859,2042],{},[103,6861,545],{},[103,6863,122],{},[10,6865,2050],{"id":2049},[15,6867,2053],{},[73,6869,6870,6884],{},[76,6871,6872],{},[79,6873,6874,6876,6878,6880,6882],{},[82,6875,84],{},[82,6877,87],{},[82,6879,90],{},[82,6881,93],{},[82,6883,96],{},[98,6885,6886,6902],{},[79,6887,6888,6892,6894,6898,6900],{},[103,6889,6890],{},[106,6891,2078],{},[103,6893,2081],{},[103,6895,6896],{},[106,6897,2086],{},[103,6899,119],{},[103,6901,203],{},[79,6903,6904,6910,6924,6928,6930],{},[103,6905,2095,6906,211,6908,244],{},[106,6907,2098],{},[106,6909,2101],{},[103,6911,2104,6912,315,6914,315,6916,315,6918,315,6920,315,6922,2123],{},[106,6913,2107],{},[106,6915,2110],{},[106,6917,2113],{},[106,6919,2116],{},[106,6921,2119],{},[106,6923,2122],{},[103,6925,6926],{},[106,6927,2128],{},[103,6929,270],{},[103,6931,203],{},[10,6933,2136],{"id":2135},[15,6935,2139],{},[2141,6937,6938,6948,6954,6958,6962,6968,6974],{},[32,6939,6940,2147,6942,251,6944,251,6946,2154],{},[106,6941,279],{},[106,6943,1907],{},[106,6945,1910],{},[106,6947,1913],{},[32,6949,6950,2159,6952,2163],{},[106,6951,426],{},[106,6953,2162],{},[32,6955,6956,2168],{},[106,6957,993],{},[32,6959,2171,6960,2175],{},[106,6961,2174],{},[32,6963,6964,2180,6966,2183],{},[106,6965,1411],{},[106,6967,1392],{},[32,6969,2186,6970,251,6972,2191],{},[106,6971,1679],{},[106,6973,1682],{},[32,6975,6976,2180,6978,2198],{},[106,6977,1536],{},[106,6979,1597],{},[2200,6981,6982],{},[15,6983,6984,2207,6986,2212,6989,2215],{},[25,6985,2206],{},[45,6987,2211],{"href":47,"rel":6988,"target":50,"title":51},[49],[106,6990,1638],{},[10,6992,2219],{"id":2218},[29,6994,6995,7000,7005,7010,7015,7026,7037],{},[32,6996,6997],{},[45,6998,2227],{"href":47,"rel":6999,"target":50,"title":51},[49],[32,7001,7002],{},[45,7003,2234],{"href":2232,"rel":7004,"target":50,"title":51},[49],[32,7006,7007],{},[45,7008,2241],{"href":2239,"rel":7009,"target":50,"title":51},[49],[32,7011,7012],{},[45,7013,2248],{"href":2246,"rel":7014,"target":50,"title":51},[49],[32,7016,7017],{},[45,7018,2255,7020,315,7022,315,7024,244],{"href":2253,"rel":7019,"target":50,"title":51},[49],[106,7021,1055],{},[106,7023,1949],{},[106,7025,2078],{},[32,7027,7028],{},[45,7029,2268,7031,251,7033,251,7035,2275],{"href":2266,"rel":7030,"target":50,"title":51},[49],[106,7032,237],{},[106,7034,240],{},[106,7036,243],{},[32,7038,7039],{},[45,7040,2282],{"href":2280,"rel":7041,"target":50,"title":51},[49],{"title":2284,"searchDepth":2285,"depth":2285,"links":7043},[7044,7045,7046,7047,7048,7049,7050,7051,7052,7053,7054,7055,7056,7057,7058],{"id":12,"depth":2288,"text":13},{"id":20,"depth":2288,"text":21},{"id":70,"depth":2288,"text":71},{"id":334,"depth":2288,"text":335},{"id":576,"depth":2288,"text":577},{"id":757,"depth":2288,"text":758},{"id":1070,"depth":2288,"text":1071},{"id":1207,"depth":2288,"text":1208},{"id":1317,"depth":2288,"text":1318},{"id":1490,"depth":2288,"text":1491},{"id":1653,"depth":2288,"text":1654},{"id":1805,"depth":2288,"text":1806},{"id":2049,"depth":2288,"text":2050},{"id":2135,"depth":2288,"text":2136},{"id":2218,"depth":2288,"text":2219},{},{"title":5,"description":2304},[2314,2315,2316,2317,2318,2319],{"id":7063,"title":4662,"body":7064,"date":7707,"description":7708,"draft":2305,"extension":2306,"meta":7709,"navigation":2308,"ogImage":2309,"path":7710,"seo":7711,"stem":7712,"tags":7713,"translationKey":2309,"updatedAt":2309,"__hash__":7714},"blog_en\u002Fen\u002Fblog\u002Fa11y-world-rules.md",{"type":7,"value":7065,"toc":7701},[7066,7069,7072,7075,7078,7082,7085,7096,7099,7103,7106,7109,7112,7115,7118,7121,7125,7130,7133,7144,7148,7151,7165,7169,7172,7195,7199,7204,7208,7229,7233,7247,7251,7255,7258,7261,7264,7267,7270,7273,7276,7279,7282,7287,7291,7294,7297,7300,7303,7306,7309,7312,7315,7318,7323,7327,7335,7339,7350,7352,7356,7363,7370,7377,7384,7388,7395,7402,7406,7413,7420,7427,7431,7438,7445,7452,7456,7463,7470,7474,7481,7488,7492,7499,7506,7510,7517,7524,7531,7538,7542,7549,7556,7560,7567,7574,7581,7585,7592,7599,7603,7610,7617,7621,7628,7635,7642,7646,7653,7660,7664,7671,7678,7682,7689,7696,7698],[15,7067,7068],{},"I’ve recently been working on adding a “certification mark” feature to my Accesserty Signal extension (a Google Chrome extension that flags, right in Google\u002FBing search results, which websites carry an accessibility mark, an accessibility statement, or a Lighthouse score). What started as a simple effort to collect each country’s marks, regulations, and testing criteria turned into something bigger: halfway through, I realized I first needed to understand each country’s policy. So I began compiling it by hand — but with so many countries and so much detail, I had to enlist AI to help organize and analyze it, and I’m sharing the result here.",[15,7070,7071],{},"The information below may contain errors; corrections from experts are very welcome. The next article will analyze each country’s certification marks.",[15,7073,7074],{},"For that reason, this article lays the institutional groundwork first. It surveys the web accessibility regimes of 16 jurisdictions: Taiwan, the United States, the United Kingdom, Australia, South Korea, Japan, and India, plus — within the EU framework — Germany, France, Spain, Portugal, Austria, Belgium, and the Netherlands, as well as non-EU Switzerland.",[15,7076,7077],{},"The focus is not on “which version of WCAG” (the technical standard has converged almost universally on WCAG 2.1\u002F2.2 AA), but on a more fundamental question: what force actually makes a website become accessible? Is it the government issuing a certificate, sending inspectors to audit periodically, levying a fine — or waiting for a person with a disability to sue? The answers differ far more than you might expect.",[10,7079,7081],{"id":7080},"_1-the-framework-separate-public-from-private-first-then-look-at-the-tool","1. The Framework: Separate Public from Private First, Then Look at the Tool",[15,7083,7084],{},"The most common mistake in comparing countries is treating each one as a single “cell.” In reality, almost every jurisdiction governs the public sector and the private sector with two different laws, two different enforcers, and two different consequences:",[29,7086,7087,7090,7093],{},[32,7088,7089],{},"The EU uses two separate directives — the WAD (public sector) and the EAA (private sector).",[32,7091,7092],{},"Germany’s public sector (BITV) carries no penalty, yet its private sector (BFSG) can be fined up to €100,000.",[32,7094,7095],{},"Taiwan legally requires government sites to obtain a mark, but imposes virtually nothing on the private sector.",[15,7097,7098],{},"This article therefore uses a two-axis analysis: first separate “public vs. private,” then use a shared vocabulary of mechanisms to locate where each jurisdiction falls.",[4689,7100,7102],{"id":7101},"six-regulatory-tools-the-mechanism-vocabulary","Six Regulatory Tools (the Mechanism Vocabulary)",[15,7104,7105],{},"① Mandatory certification (gates ex ante) — Government or designated bodies test and certify; the law requires certain entities to obtain it.",[15,7107,7108],{},"② Self-declaration + government monitoring (continuous) — Regulated parties self-assess and publish an accessibility statement; government samples and re-checks, plus a complaints channel.",[15,7110,7111],{},"③ Procurement \u002F supply-chain leverage (gates at entry) — “Government only buys accessible products” \u002F “non-compliance loses you the contract.”",[15,7113,7114],{},"④ Market surveillance + fines (ex post) — A market-surveillance authority audits, orders remediation, imposes fines, or even pulls the service.",[15,7116,7117],{},"⑤ Anti-discrimination litigation (ex post) — No prior certification; driven by individual complaints, civil litigation, and administrative remedies.",[15,7119,7120],{},"⑥ Soft law \u002F duty to make efforts — No binding threshold or penalty; relies on administrative guidance and reputational pressure.",[4689,7122,7124],{"id":7123},"_2-jurisdiction-by-jurisdiction-review-grouped-by-dominant-model","2. Jurisdiction-by-Jurisdiction Review (Grouped by Dominant Model)",[7126,7127,7129],"h5",{"id":7128},"group-a-government-mandatory-certification-model-east-asia-india","Group A — Government Mandatory-Certification Model (East Asia + India)",[15,7131,7132],{},"What these jurisdictions share: the government (or a government-designated body) acts as the certifier, and “obtaining certification” is written into law or policy.",[29,7134,7135,7138,7141],{},[32,7136,7137],{},"Taiwan. The parent law — Article 52–2 of the People with Disabilities Rights Protection Act — explicitly requires government agencies and schools to have their websites “pass accessibility testing at Priority 1 (Level A) or above, and obtain the certification mark.” The Ministry of Digital Affairs runs the platform, combining self-testing, automated testing, and human testing (including testers with disabilities). The standard is based on WCAG 2.1 AA, with an upgrade to 2.2 planned for end-2026. Mandatory for the public sector; unregulated for the private sector.",[32,7139,7140],{},"South Korea. Centered on Article 21 of the Anti-Discrimination Against and Remedies for Persons with Disabilities Act, the Ministry of Science and ICT (MSIT) designates three certification bodies to issue an official quality mark, under the KWCAG 2.2 standard. Penalties are relatively hard — malicious discrimination can mean up to 3 years’ imprisonment or a fine up to KRW 30 million, plus administrative fines and loss of eligibility for government contracts. Public sector via certification; private sector compelled (in phases) by anti-discrimination law.",[32,7142,7143],{},"India. Built on the Rights of Persons with Disabilities Act (RPwD 2016). STQC — an official body under MeitY — tests and issues the CQW certification (bundling accessibility, cybersecurity, and usability together), under the GIGW 3.0 standard (WCAG 2.1 AA). Penalties run from ₹10,000 for a first offense to up to ₹5 lakh for repeat offenses. A 2025 SEBI circular extended mandatory accessibility to the financial sector for the first time — India is expanding from the public sector into the private.",[7126,7145,7147],{"id":7146},"group-b-anti-discrimination-litigation-driven-model-common-law-japan","Group B — Anti-Discrimination, Litigation-Driven Model (Common Law + Japan)",[15,7149,7150],{},"These jurisdictions set no government pre-certification; they frame accessibility as “anti-discrimination \u002F equal rights” and drive it through complaints and lawsuits.",[29,7152,7153,7156,7159,7162],{},[32,7154,7155],{},"United States. A dual track — the ADA (anti-discrimination: Title II for state\u002Flocal government, Title III for the private sector) plus Section 508 (federal procurement). The standard must be layered: ADA Title II’s 2024 rule adopts WCAG 2.1 AA; Section 508 still references WCAG 2.0 AA; Title III has no statutory technical standard and relies on case law. The classic “litigation-driven” country, with thousands of website lawsuits a year.",[32,7157,7158],{},"United Kingdom. Public sector under the Public Sector Bodies Accessibility Regulations 2018 (PSBAR, transposing the WAD), monitored by GDS and enforced by the EHRC; private sector under the Equality Act 2010, which requires “reasonable adjustments,” with disabled users able to claim in the County Court. The standard tracks “WCAG as amended” (currently 2.2 AA). Post-Brexit, the UK has not transposed the EAA, so the private sector relies solely on the Equality Act.",[32,7160,7161],{},"Australia. The Disability Discrimination Act 1992 (DDA) covers both public and private sectors, but with no statutory technical standard and no administrative fines; the AHRC receives complaints → conciliation → the Federal Court, which can award damages and order remediation (the landmark case being Maguire v SOCOG, 2000). The federal government separately requires the latest WCAG (now 2.2 AA) via the DTA’s Digital Service Standard 2.0. In April 2025 the AHRC updated its recommended standard to WCAG 2.2 AA.",[32,7163,7164],{},"Japan. The Act on the Elimination of Discrimination against Persons with Disabilities — Article 7 (government) and Article 8 (private) — with the standard JIS X 8341–3:2016 (corresponding to WCAG 2.0, moving toward 2.1 in practice). As of 1 April 2024, the private-sector duty of “reasonable accommodation” was upgraded from a duty-to-make-efforts to a legal obligation, yet web accessibility itself remains more of an aspirational target with virtually no direct penalty (the only fine, up to ¥200,000, targets refusal to cooperate with government investigations or filing false reports). A textbook case of “soft law.”",[7126,7166,7168],{"id":7167},"group-c-eu-dual-directive-model-wad-for-public-eaa-for-private","Group C — EU Dual-Directive Model (WAD for Public, EAA for Private)",[15,7170,7171],{},"These countries are highly uniform in structure: the public sector derives from the WAD (2016\u002F2102) and runs on self-declaration + government monitoring; the private sector derives from the EAA (2019\u002F882, applicable from 28 June 2025) and runs on market surveillance + fines. The differences lie in “how much bite the monitoring has” and “how large the fines are.” The standard is uniformly EN 301 549 → WCAG 2.1 AA.",[29,7173,7174,7177,7180,7183,7186,7189,7192],{},[32,7175,7176],{},"Germany. Three layers — BGG (parent law) + BITV 2.0 (public sector) + BFSG (private sector). The public sector carries no penalty, relying on collective litigation (Verbandsklage); the private sector is handled by the federal states’ joint market-surveillance body (seated in Magdeburg), with fines up to €100,000.",[32,7178,7179],{},"France. Article 47 of Law №2005–102 + RGAA 4.1.2, with DINUM setting the standard. What’s distinctive: since 2023, ARCOM has real sanctioning power even over the public sector — €25,000 for failing declaration duties, €50,000 for accessibility non-conformity, renewable annually if uncorrected. The private sector (EAA) is overseen by the DGCCRF’s market surveillance, with aggregate fines reaching €250,000. France is one of the few EU countries that gave its public-sector monitoring real teeth.",[32,7181,7182],{},"Spain. Public sector under RD 1112\u002F2018 + monitoring by the Web Accessibility Observatory; private sector under RDL 11\u002F2023. Fines split by regime — public-sector oversight around €3,000–100,000, while the private-sector\u002FEAA tiers can reach €1,000,000 (very serious), among the highest ceilings in the EU. No official mark; AENOR and Ilunion are private voluntary certifications.",[32,7184,7185],{},"Portugal. Public sector under DL 83\u002F2018, with AMA monitoring and operating the government-run but voluntary “Usability and Accessibility Seal” (Selo: gold\u002Fsilver\u002Fbronze); private sector under DL 82\u002F2022, audited by multiple sectoral regulators (ANACOM, ASAE, etc.), with corporate fines up to roughly €44,892.",[32,7187,7188],{},"Austria. Public sector under the WZG, monitored by the FFG (Research Promotion Agency); private sector under the BaFG (2025), with the Social Ministry Service (Sozialministeriumservice) as market-surveillance authority, fines up to €80,000. WACA is a private voluntary mark.",[32,7190,7191],{},"Belgium. Its federal structure fragments the legal basis — one federal law (19 July 2018) plus several regional decrees; the Digital Accessibility Office under BOSA monitors and coordinates. The private-sector EAA is enforced by the federal economy ministry, among others. AnySurfer is a private voluntary mark.",[32,7193,7194],{},"Netherlands. Public sector under the Temporary Decree on Digital Accessibility for Government, using a comply-or-explain approach + Logius checking statements + a public dashboard, with no fines; the private-sector Implementation Act is supervised by the Authority for Consumers and Markets (ACM), with fines up to €90,000 and the power to ban a non-compliant service. Drempelvrij\u002FDigital Inclusive is a private voluntary mark.",[7126,7196,7198],{"id":7197},"group-d-non-eu-its-own-system","Group D — Non-EU, Its Own System",[29,7200,7201],{},[32,7202,7203],{},"Switzerland. The Disability Equality Act (BehiG, 2004) + the eCH-0059 standard (WCAG 2.1 AA). It currently applies only to the federal administration, with no fines, relying on individuals asserting their rights. Non-EU, so the EAA does not apply. A revision is underway, expected no earlier than 1 January 2027, to extend the obligation to private online services.",[4689,7205,7207],{"id":7206},"_3-the-public-private-mechanism-matrix","3. The Public × Private × Mechanism Matrix",[7209,7210,7211,7218],"figure",{},[15,7212,7213],{},[7214,7215],"img",{"alt":7216,"src":7217},"Web Accessibility Regimes","\u002Fimages\u002Fblog\u002F49.webp",[7219,7220,7221],"figcaption",{},[15,7222,7223,7224],{},"Web Accessibility Regimes — Public × Private Mechanism Matrix. Each jurisdiction is placed on both axes; ①–⑥ refer to the six mechanisms defined in Section 1.\n",[45,7225,7228],{"href":7226,"rel":7227,"target":50,"title":4622},"https:\u002F\u002Fwww.deque.com\u002Fblog\u002Fis-closing-the-web-accessibility-design-development-gap-a-bridge-too-far\u002F",[49],"Is Closing the Web Accessibility Design\u002FDevelopment Gap a Bridge Too Far?",[4689,7230,7232],{"id":7231},"four-structural-facts-the-matrix-reveals","Four Structural Facts the Matrix Reveals",[2141,7234,7235,7238,7241,7244],{},[32,7236,7237],{},"The public sector clusters around “certification\u002Fmonitoring”; the private sector splits into two paths. The public column is always ① or ②; the private column fractures into two legal traditions — common-law countries (US, UK, AU) plus East Asian anti-discrimination regimes (JP, KR) rely on ⑤ litigation, while the EU relies on ④ market surveillance + fines.",[32,7239,7240],{},"The “private sector” cell was long the weakest, only filled in during 2024–2025. Taiwan’s private sector is still nearly blank, Japan only hardened in 2024, both the EU’s EAA and India’s SEBI rule arrived in 2025, and Switzerland won’t until 2027. The center of gravity of accessibility enforcement is spilling over from the public sector into the private.",[32,7242,7243],{},"The same ② “monitoring” mechanism has very different bite. Most EU countries’ public sectors have no fines (Germany, Netherlands, Belgium, Austria, Portugal), relying on transparency and collective litigation; France is the outlier, with ARCOM able to fine the public sector up to €50k and “name and shame”; the UK has no fines but the EHRC holds investigative and litigation powers.",[32,7245,7246],{},"Private-sector (EAA) fine ceilings vary enormously. Portugal ~€45k, Austria €80k, Netherlands €90k, Germany €100k, France aggregate €250k, Spain up to €1M. The same EAA, “priced” wildly differently across countries.",[10,7248,7250],{"id":7249},"_4-pros-and-cons-of-each-mechanism","4. Pros and Cons of Each Mechanism",[4689,7252,7254],{"id":7253},"a-common-public-sector-mechanisms","A. Common Public-Sector Mechanisms",[15,7256,7257],{},"① Mandatory certification — (Taiwan, Korea, India)",[15,7259,7260],{},"✅ Uniform standard; clear pass\u002Ffail; publicly verifiable; strongest effect on government sites; naturally produces an “official mark” people can trust.",[15,7262,7263],{},"⚠️ High administrative cost; tends to freeze at the moment of certification; hard to scale; quality can regress after passing (a one-off gate).",[15,7265,7266],{},"② Self-declaration + monitoring — (EU public sector, UK)",[15,7268,7269],{},"✅ Low barrier; can cover a vast number of sites; continuous monitoring reflects the current state; no need for a huge certification apparatus.",[15,7271,7272],{},"⚠️ Self-assessment has low credibility; monitoring is only sampled; becomes a formality when penalties are weak (a beautiful statement on an inaccessible site).",[15,7274,7275],{},"③ Procurement \u002F supply-chain leverage — (US Section 508)",[15,7277,7278],{},"✅ Drives many suppliers without needing new penalties; strong demonstration effect; clear chain of responsibility.",[15,7280,7281],{},"⚠️ Only reaches those who transact with government; easily gamed by inflated “self-declarations” (VPATs).",[2200,7283,7284],{},[15,7285,7286],{},"The public sector’s shared weakness: however strong, its boundary stops at the government itself. Taiwan’s and India’s mandatory certification has no spillover to the private sector; the EU’s monitoring model has broad coverage but shallow depth, and most countries impose no fines on the public sector at all (France being a rare exception).",[4689,7288,7290],{"id":7289},"b-common-private-sector-mechanisms","B. Common Private-Sector Mechanisms",[15,7292,7293],{},"④ Market surveillance + fines — (EU private sector, India SEBI)",[15,7295,7296],{},"✅ Strong economic deterrence; clearly covers the private sector; clear attribution of responsibility; can pull or ban a service.",[15,7298,7299],{},"⚠️ Ex post (the harm is already done); limited enforcement capacity; heavy burden on SMEs; easily dodged via exemptions; ceilings vary widely and it only launched in 2025, so effectiveness is yet to be seen.",[15,7301,7302],{},"⑤ Anti-discrimination litigation — (US, UK, Australia, Korea)",[15,7304,7305],{},"✅ Empowers the affected individual; case law can raise the bar quickly; no need for a large ex-ante apparatus.",[15,7307,7308],{},"⚠️ Highly uncertain; standards form in a fragmented way through the courts; litigation costs get passed on; prone to “predatory lawsuits”; the vulnerable may not be able to afford to sue.",[15,7310,7311],{},"⑥ Soft law \u002F duty to make efforts — (Japan, Taiwan private, Switzerland private until 2027)",[15,7313,7314],{},"✅ Low resistance to adoption; useful as a transitional step; can build consensus before hardening.",[15,7316,7317],{},"⚠️ Almost no binding force; degenerates into a declaration; improvement depends heavily on corporate goodwill and reputational pressure.",[2200,7319,7320],{},[15,7321,7322],{},"The private sector’s shared dilemma: it is either ex post (fines and lawsuits both come after the harm) or toothless (soft law). No country applies “ex-ante mandatory certification” to the private sector — which is precisely why official marks grow almost exclusively in the public sector.",[4689,7324,7326],{"id":7325},"cross-group-observations","Cross-Group Observations",[29,7328,7329,7332],{},[32,7330,7331],{},"There is no single best solution; mature jurisdictions all “stack” tools. The US = procurement (③) + litigation (⑤); EU countries = monitoring (②) + market surveillance (④), plus individual litigation. A strong regime layers multiple tools that back each other up, rather than betting on one.",[32,7333,7334],{},"The presence or size of fines doesn’t equal effectiveness. The Netherlands has no public-sector fines yet sustains transparency pressure via comply-or-explain + a public dashboard; Spain fines the private sector up to €1M, but actual enforcement capacity remains a question mark. The real difference lies in enforcement density, not just the numbers in the statute.",[10,7336,7338],{"id":7337},"_5-overall-observations-and-trends","5. Overall Observations and Trends",[2141,7340,7341,7344,7347],{},[32,7342,7343],{},"The technical standard is converging globally, while regulatory tools diverge sharply. Everyone is converging on EN 301 549 \u002F WCAG 2.1 (moving to 2.2) AA; the real differences are all in “who enforces, and how.”",[32,7345,7346],{},"The center of gravity is shifting from “public-sector soft law \u002F ex-ante certification” toward “private-sector market surveillance + fundamental rights.” 2024–2025 is the watershed: the EU’s EAA, Japan’s reasonable-accommodation duty, India’s 2025 Supreme Court ruling and SEBI circular all push accessibility from an “aspirational target” toward a penalizable, litigable right. Switzerland in 2027 will be next.",[32,7348,7349],{},"“Whether there’s an official mark” ≠ “how strong the regime is.” Taiwan, Korea, and India have mandatory official marks; but Germany, Spain, and the Netherlands — countries with complete regimes — deliberately issue no official mark, opting instead for self-declaration + monitoring and leaving marks to a private, voluntary market. Portugal’s Selo, though government-run, is still merely a voluntary excellence award rather than a compliance gate.",[10,7351,4613],{"id":4612},[4689,7353,7355],{"id":7354},"international-framework","International \u002F Framework",[15,7357,7358],{},[45,7359,7362],{"href":7360,"rel":7361,"target":50,"title":4622},"https:\u002F\u002Fwww.w3.org\u002FWAI\u002Fpolicies\u002F",[49],"W3C WAI, Web Accessibility Laws & Policies",[15,7364,7365],{},[45,7366,7369],{"href":7367,"rel":7368,"target":50,"title":4622},"https:\u002F\u002Feur-lex.europa.eu\u002Feli\u002Fdir\u002F2016\u002F2102\u002Foj",[49],"EU Web Accessibility Directive 2016\u002F2102",[15,7371,7372],{},[45,7373,7376],{"href":7374,"rel":7375,"target":50,"title":4622},"https:\u002F\u002Fcommission.europa.eu\u002Fstrategy-and-policy\u002Fpolicies\u002Fjustice-and-fundamental-rights\u002Fdisability\u002Feuropean-accessibility-act-eaa_en",[49],"European Accessibility Act, Directive 2019\u002F882",[15,7378,7379],{},[45,7380,7383],{"href":7381,"rel":7382,"target":50,"title":4622},"https:\u002F\u002Faccessible-eu-centre.ec.europa.eu\u002F",[49],"EN 301 549（Accessible EU Centre）",[4689,7385,7387],{"id":7386},"taiwan","Taiwan",[15,7389,7390],{},[45,7391,7394],{"href":7392,"rel":7393,"target":50,"title":4622},"https:\u002F\u002Flaw.moj.gov.tw\u002FLawClass\u002FLawSingle.aspx?Pcode=D0050046&FLNO=52-2",[49],"People with Disabilities Rights Protection Act, Art. 52–2",[15,7396,7397],{},[45,7398,7401],{"href":7399,"rel":7400,"target":50,"title":4622},"https:\u002F\u002Faccessibility.moda.gov.tw\u002F",[49],"Ministry of Digital Affairs, Website Accessibility Guidelines",[4689,7403,7405],{"id":7404},"united-states","United States",[15,7407,7408],{},[45,7409,7412],{"href":7410,"rel":7411,"target":50,"title":4622},"https:\u002F\u002Fwww.ada.gov\u002Flaw-and-regs\u002Fada\u002F",[49],"ADA",[15,7414,7415],{},[45,7416,7419],{"href":7417,"rel":7418,"target":50,"title":4622},"https:\u002F\u002Fwww.section508.gov\u002F",[49],"Section 508",[15,7421,7422],{},[45,7423,7426],{"href":7424,"rel":7425,"target":50,"title":4622},"https:\u002F\u002Fwww.levelaccess.com\u002Fblog\u002Fada-vs-section-508-whats-the-difference\u002F",[49],"ADA Title II 2024 rule vs. Section 508 (Level Access)",[4689,7428,7430],{"id":7429},"united-kingdom","United Kingdom",[15,7432,7433],{},[45,7434,7437],{"href":7435,"rel":7436,"target":50,"title":4622},"https:\u002F\u002Fwww.legislation.gov.uk\u002Fuksi\u002F2018\u002F952\u002Fcontents",[49],"PSBAR 2018",[15,7439,7440],{},[45,7441,7444],{"href":7442,"rel":7443,"target":50,"title":4622},"https:\u002F\u002Fwww.legislation.gov.uk\u002Fukpga\u002F2010\u002F15\u002Fcontents",[49],"Equality Act 2010",[15,7446,7447],{},[45,7448,7451],{"href":7449,"rel":7450,"target":50,"title":4622},"https:\u002F\u002Fwww.gov.uk\u002Fguidance\u002Faccessibility-requirements-for-public-sector-websites-and-apps",[49],"Public-sector accessibility requirements (GOV.UK)",[4689,7453,7455],{"id":7454},"australia","Australia",[15,7457,7458],{},[45,7459,7462],{"href":7460,"rel":7461,"target":50,"title":4622},"https:\u002F\u002Fwww.legislation.gov.au\u002FC2004A04426\u002Flatest",[49],"Disability Discrimination Act 1992",[15,7464,7465],{},[45,7466,7469],{"href":7467,"rel":7468,"target":50,"title":4622},"https:\u002F\u002Fhumanrights.gov.au\u002Four-work\u002Fdisability-rights\u002Fworld-wide-web-access-disability-discrimination-act-advisory-notes-ver",[49],"AHRC, World Wide Web Access: DDA Advisory Notes",[4689,7471,7473],{"id":7472},"south-korea","South Korea",[15,7475,7476],{},[45,7477,7480],{"href":7478,"rel":7479,"target":50,"title":4622},"https:\u002F\u002Felaw.klri.re.kr\u002Feng_mobile\u002Fviewer.do?hseq=55535&type=part&key=38",[49],"Act on Prohibition of Discrimination against Persons with Disabilities(KLRI English)",[15,7482,7483],{},[45,7484,7487],{"href":7485,"rel":7486,"target":50,"title":4622},"https:\u002F\u002Fenglish.seoul.go.kr\u002Fweb-accessibility-quality-mark\u002F",[49],"Seoul, Web Accessibility Quality Mark",[4689,7489,7491],{"id":7490},"japan","Japan",[15,7493,7494],{},[45,7495,7498],{"href":7496,"rel":7497,"target":50,"title":4622},"https:\u002F\u002Fwww8.cao.go.jp\u002Fshougai\u002Fsuishin\u002Flaw_h25-65.html",[49],"Act on the Elimination of Discrimination against Persons with Disabilities (Cabinet Office)",[15,7500,7501],{},[45,7502,7505],{"href":7503,"rel":7504,"target":50,"title":4622},"https:\u002F\u002Fwww.amt-law.com\u002Fasset\u002Fpdf\u002Fbulletins9_pdf\u002FLELB63.pdf",[49],"1 April 2024 reasonable-accommodation duty (Anderson Mōri & Tomotsune) ",[4689,7507,7509],{"id":7508},"india","India",[15,7511,7512],{},[45,7513,7516],{"href":7514,"rel":7515,"target":50,"title":4622},"https:\u002F\u002Fniepvd.nic.in\u002Fthe-rights-of-persons-with-disabilities-rpwd-act-2016\u002F",[49],"RPwD Act 2016",[15,7518,7519],{},[45,7520,7523],{"href":7521,"rel":7522,"target":50,"title":4622},"https:\u002F\u002Fguidelines.india.gov.in\u002F",[49],"GIGW 3.0",[15,7525,7526],{},[45,7527,7530],{"href":7528,"rel":7529,"target":50,"title":4622},"https:\u002F\u002Fwww.stqc.gov.in\u002Fwebsite-quality-certification-0",[49],"STQC CQW",[15,7532,7533],{},[45,7534,7537],{"href":7535,"rel":7536,"target":50,"title":4622},"https:\u002F\u002Fwww.deque.com\u002Fblog\u002Fsebi-sets-a-new-standard-for-digital-accessibility-in-finance-in-india\u002F",[49],"SEBI 2025 digital accessibility (Deque)",[4689,7539,7541],{"id":7540},"germany","Germany",[15,7543,7544],{},[45,7545,7548],{"href":7546,"rel":7547,"target":50,"title":4622},"https:\u002F\u002Fwww.gesetze-im-internet.de\u002Fbfsg\u002F",[49],"BGG \u002F BITV 2.0 \u002F BFSG",[15,7550,7551],{},[45,7552,7555],{"href":7553,"rel":7554,"target":50,"title":4622},"https:\u002F\u002Fms.sachsen-anhalt.de\u002Fthemen\u002Fmenschen-mit-behinderungen\u002Faktuelles\u002Fmarktueberwachungsstelle-der-laender-fuer-die-barrierefreiheit-von-produkten-und-dienstleistungen",[49],"States’ joint market-surveillance body (Magdeburg)",[4689,7557,7559],{"id":7558},"france","France",[15,7561,7562],{},[45,7563,7566],{"href":7564,"rel":7565,"target":50,"title":4622},"https:\u002F\u002Fwww.legifrance.gouv.fr\u002Floda\u002Farticle_lc\u002FLEGIARTI000037388867\u002F",[49],"Loi 2005-102, art. 47",[15,7568,7569],{},[45,7570,7573],{"href":7571,"rel":7572,"target":50,"title":4622},"https:\u002F\u002Faccessibilite.numerique.gouv.fr\u002F",[49],"RGAA 4.1",[15,7575,7576],{},[45,7577,7580],{"href":7578,"rel":7579,"target":50,"title":4622},"https:\u002F\u002Fwww.arcom.fr\u002Fnous-connaitre\u002Fnos-missions\u002Fgarantir-le-pluralisme-et-la-cohesion-sociale\u002Fles-droits-des-personnes-handicapees\u002Faccessibilite-des-sites-et-des-services-numeriques",[49],"ARCOM oversight ",[4689,7582,7584],{"id":7583},"spain","Spain",[15,7586,7587],{},[45,7588,7591],{"href":7589,"rel":7590,"target":50,"title":4622},"https:\u002F\u002Fwww.boe.es\u002Fbuscar\u002Fact.php?id=BOE-A-2018-12699",[49],"RD 1112\u002F2018",[15,7593,7594],{},[45,7595,7598],{"href":7596,"rel":7597,"target":50,"title":4622},"https:\u002F\u002Fwww.boe.es\u002Fbuscar\u002Fact.php?id=BOE-A-2023-11022",[49],"RDL 11\u002F2023",[4689,7600,7602],{"id":7601},"portugal","Portugal",[15,7604,7605],{},[45,7606,7609],{"href":7607,"rel":7608,"target":50,"title":4622},"https:\u002F\u002Fwww.acessibilidade.gov.pt\u002Fmudanca\u002Fdl-n-o-83-2018\u002F",[49],"DL 83\u002F2018",[15,7611,7612],{},[45,7613,7616],{"href":7614,"rel":7615,"target":50,"title":4622},"https:\u002F\u002Fwww.acessibilidade.gov.pt\u002F",[49],"DL 82\u002F2022（EAA 轉化）AMA \u002F acessibilidade.gov.pt",[4689,7618,7620],{"id":7619},"austria","Austria",[15,7622,7623],{},[45,7624,7627],{"href":7625,"rel":7626,"target":50,"title":4622},"https:\u002F\u002Fwww.ris.bka.gv.at\u002FGeltendeFassung.wxe?Abfrage=Bundesnormen&Gesetzesnummer=20010727",[49],"WZG（RIS）",[15,7629,7630],{},[45,7631,7634],{"href":7632,"rel":7633,"target":50,"title":4622},"https:\u002F\u002Fffg.at\u002Fbarrierefreiheit\u002FWZG-Anwendbarkeit",[49],"FFG Monitoring and Complaints Office",[15,7636,7637],{},[45,7638,7641],{"href":7639,"rel":7640,"target":50,"title":4622},"https:\u002F\u002Fwww.digitalbarrierefrei.at\u002Fen\u002F",[49],"Digital Barrierefrei",[4689,7643,7645],{"id":7644},"belgium","Belgium",[15,7647,7648],{},[45,7649,7652],{"href":7650,"rel":7651,"target":50,"title":4622},"https:\u002F\u002Fbosa.belgium.be\u002Ffr\u002Fregulations\u002Floi-du-19-juillet-2018-accessibilite",[49],"Law of 19 July 2018 (BOSA)",[15,7654,7655],{},[45,7656,7659],{"href":7657,"rel":7658,"target":50,"title":4622},"https:\u002F\u002Faccessibility.belgium.be\u002Ffr\u002Fmissions-et-plaintes",[49],"Belgian Web Accessibility (monitoring & complaints)",[4689,7661,7663],{"id":7662},"netherlands","Netherlands",[15,7665,7666],{},[45,7667,7670],{"href":7668,"rel":7669,"target":50,"title":4622},"https:\u002F\u002Fwww.digitoegankelijk.nl\u002Fwetgeving\u002Fbeleid-nederland-en-europa",[49],"DigiToegankelijk (policy)",[15,7672,7673],{},[45,7674,7677],{"href":7675,"rel":7676,"target":50,"title":4622},"https:\u002F\u002Fwww.levelaccess.com\u002Fwp-content\u002Fuploads\u002F2025\u002F06\u002FNetherlands-Digital-Accessibility-Laws.pdf",[49],"Netherlands Digital Accessibility Laws（Level Access）",[4689,7679,7681],{"id":7680},"switzerland","Switzerland",[15,7683,7684],{},[45,7685,7688],{"href":7686,"rel":7687,"target":50,"title":4622},"https:\u002F\u002Fwww.bit.admin.ch\u002Fen\u002Faccessibility-in-the-federal-administration",[49],"BehiG \u002F Accessibility in the federal administration (bit.admin.ch)",[15,7690,7691],{},[45,7692,7695],{"href":7693,"rel":7694,"target":50,"title":4622},"https:\u002F\u002Fhaerting.ch\u002Fen\u002Finsights\u002Faccessible-websites-and-apps-new-obligations-under-the-draft-of-the-new-swiss-disability-discrimination-act-behig\u002F",[49],"BehiG revision draft (2027, Härting)",[15,7697,5212],{},[15,7699,7700],{},"Information compiled as of June 2026; it may contain errors, and corrections are welcome. The next article will analyze each country’s certification marks.",{"title":2284,"searchDepth":2285,"depth":2285,"links":7702},[7703,7704,7705,7706],{"id":7080,"depth":2288,"text":7081},{"id":7249,"depth":2288,"text":7250},{"id":7337,"depth":2288,"text":7338},{"id":4612,"depth":2288,"text":4613},"2026-06-09","What started as a simple effort to collect each country’s marks, regulations, and testing criteria turned into something bigger — halfway through, I realized I first needed to understand each country’s policy.",{},"\u002Fen\u002Fblog\u002Fa11y-world-rules",{"title":4662,"description":7708},"en\u002Fblog\u002Fa11y-world-rules",[2318,5233,5234],"XMqA3nmB3sE7rVe8rqfTYanqBrWujEC0u7Z1DyU2Nbo",{"id":7716,"title":7717,"body":7718,"date":7811,"description":7812,"draft":2305,"extension":2306,"meta":7813,"navigation":2308,"ogImage":2309,"path":7814,"seo":7815,"stem":7816,"tags":7817,"translationKey":2309,"updatedAt":2309,"__hash__":7819},"blog_en\u002Fen\u002Fblog\u002Faccessibility-testing.md","Accessibility Testing Should Not Be Confined by Professional Silos",{"type":7,"value":7719,"toc":7809},[7720,7723,7737,7740,7743,7754,7757,7760,7763,7766,7780,7783,7786,7800,7803,7806],[15,7721,7722],{},"In recent years, digital accessibility has evolved from a niche topic for experts into a core consideration for product teams. In the past, accessibility was often synonymous with regulatory compliance, formal audits, or a checklist dusted off only at the very end of a project. But things have changed:",[29,7724,7725,7728,7731,7734],{},[32,7726,7727],{},"Designers are now checking text-to-background contrast directly within Figma.",[32,7729,7730],{},"Frontend engineers are utilizing Lighthouse, axe, and the Accessibility panel in DevTools.",[32,7732,7733],{},"QA engineers are incorporating keyboard navigation into their test cases.",[32,7735,7736],{},"Product Managers are realizing that poor accessibility isn’t just a “bad user experience” — it is an exclusionary barrier that shuts out entire groups of users.",[15,7738,7739],{},"These are significant strides, and the growing awareness is encouraging. I believe it is now time to shift our focus from merely “promoting accessibility” to making accessibility testing something that can be performed easily, anytime, and anywhere.",[15,7741,7742],{},"Current workflows and tools still tend to fragment accessibility responsibilities based on job titles:",[29,7744,7745,7748,7751],{},[32,7746,7747],{},"Designers use Figma to check contrast.",[32,7749,7750],{},"Engineers use DevTools to inspect code.",[32,7752,7753],{},"QA handles keyboard testing.",[15,7755,7756],{},"While this division of labor seems logical, it creates silos. Team members focus only on their specific domains and assume that other aspects of accessibility are “someone else’s job.” This is suboptimal. Accessibility testing should be a shared responsibility — accessible and performable by any team member, regardless of their role. It should not be confined by specific tools or professional titles.",[15,7758,7759],{},"Take a simple example: if a PM wants to verify color contrast, they currently have to master Figma, learn how to navigate DevTools, or rely on external online checkers to manually input hex codes. The barrier to entry remains far too high. Every team member should possess a baseline “accessibility mindset” and understand the fundamental principles that apply throughout the development lifecycle.",[15,7761,7762],{},"I am not suggesting that we blur professional boundaries or replace the need for deep expertise. Comprehensive audits — involving assistive technology testing, nuanced human judgment, regulatory interpretation, and complex interaction patterns — will always require specialists. However, preliminary checks should not be so difficult that only a few people can perform them.",[15,7764,7765],{},"Many issues don’t need to wait for a formal audit to be identified. If we empower team members to take action, we can catch problems much earlier:",[29,7767,7768,7771,7774,7777],{},[32,7769,7770],{},"One click to run a scan.",[32,7772,7773],{},"One click to simulate different visual impairments.",[32,7775,7776],{},"One click to check for basic PDF structural integrity.",[32,7778,7779],{},"One click to flag obvious accessibility risks on the page.",[15,7781,7782],{},"These are small actions, but they enable us to catch issues early in the process. We don’t need everyone to memorize the WCAG or become full-time accessibility consultants. We just need to ensure that when someone suspects a potential issue, they don’t stop simply because it’s “not their job.” They should be able to check, verify, and articulate the problem.",[15,7784,7785],{},"This is how I view the role of Accesserty DevCheck. While its current capabilities are just a starting point, it is designed to be cross-functional. Through our Chrome extension, anyone can perform cross-domain checks:",[29,7787,7788,7791,7794,7797],{},[32,7789,7790],{},"Anyone can run color-blindness simulations.",[32,7792,7793],{},"Anyone can observe usability patterns and scenarios.",[32,7795,7796],{},"Anyone can scan page structures and accessibility rule compliance.",[32,7798,7799],{},"Anyone can inspect PDF structures.",[15,7801,7802],{},"My goal for the future of accessibility tools is to lower the barrier to entry — not to offload professional responsibilities onto everyone, but to provide everyone with the agency to verify issues the moment they are discovered.",[15,7804,7805],{},"If accessibility testing remains the exclusive domain of a few, it inevitably leads to bottlenecks and burnout. But if it is integrated into our daily routines, it can evolve into a genuine culture — one where we don’t wait until a user is blocked or frustrated to care. Because by the time a user encounters a barrier, they have likely already felt excluded, abandoned the flow, or been shut out entirely.",[15,7807,7808],{},"Accessibility awareness is spreading. Now, we need to ensure that the ability to test for it spreads just as widely — making it simple enough for anyone to verify, at any time, with just a few clicks.",{"title":2284,"searchDepth":2285,"depth":2285,"links":7810},[],"2026-05-30","In the past, accessibility was often synonymous with regulatory compliance, formal audits, or a checklist dusted off only at the very end of a project. But things have changed.",{},"\u002Fen\u002Fblog\u002Faccessibility-testing",{"title":7717,"description":7812},"en\u002Fblog\u002Faccessibility-testing",[5233,2318,7818],"Testing","zV4eL6u-_wTTIiWdGVygDqRjVNVWJgKrrs-uarOPYiI",{"id":7821,"title":7822,"body":7823,"date":7857,"description":7827,"draft":2305,"extension":2306,"meta":7858,"navigation":2308,"ogImage":2309,"path":7859,"seo":7860,"stem":7861,"tags":7862,"translationKey":2309,"updatedAt":2309,"__hash__":7864},"blog_en\u002Fen\u002Fblog\u002F2026-forbes-accessibility.md","Forbes Accessibility 200",{"type":7,"value":7824,"toc":7855},[7825,7828,7831,7834,7837],[15,7826,7827],{},"A few days ago, I came across the Forbes Accessibility 200 list.",[15,7829,7830],{},"I started digging a little deeper and made an expanded version of the list with extra context.",[15,7832,7833],{},"It’s not an official dataset, and it’s definitely not endorsed by Forbes. Just a personal research\u002Freference version because I wanted something easier to browse, check, and learn from.",[15,7835,7836],{},"One thing I really enjoyed seeing: accessibility shows up across so many different fields. Software, education, mobility, entertainment, finance, sports, policy, advocacy, assistive tech, and a bunch of organizations I hadn’t heard of before.",[15,7838,7839,7840,7843,7848,7850],{},"Sharing it here in case anyone else is curious too.",[7841,7842],"br",{},[45,7844,7847],{"href":7845,"rel":7846,"target":50,"title":4622},"https:\u002F\u002Fneil-lin.github.io\u002F2026-forbes-accessibility-200-list\u002F",[49],"html version",[7841,7849],{},[45,7851,7854],{"href":7852,"rel":7853,"target":50,"title":4622},"https:\u002F\u002Fgithub.com\u002FNeil-Lin\u002F2026-forbes-accessibility-200-list\u002Fblob\u002Fmain\u002Foutput\u002Fforbes_accessibility_200.md",[49],"Markdown version",{"title":2284,"searchDepth":2285,"depth":2285,"links":7856},[],"2026-05-28",{},"\u002Fen\u002Fblog\u002F2026-forbes-accessibility",{"title":7822,"description":7827},"en\u002Fblog\u002F2026-forbes-accessibility",[2318,5233,7863],"ForbesAccessibility","rD27X-qAYKMdmqc_4Yjxub94elCOVQgPESyorysrVZ0",{"id":7866,"title":7867,"body":7868,"date":7993,"description":7994,"draft":2305,"extension":2306,"meta":7995,"navigation":2308,"ogImage":2309,"path":7996,"seo":7997,"stem":7998,"tags":7999,"translationKey":2309,"updatedAt":2309,"__hash__":8003},"blog_en\u002Fen\u002Fblog\u002Fa11y-tree-for-who.md","Are the Users of Web Accessibility Changing?",{"type":7,"value":7869,"toc":7987},[7870,7886,7889,7893,7896,7901,7904,7908,7911,7914,7917,7926,7929,7933,7942,7947,7950,7953,7956,7959,7962,7965,7968,7971,7974,7978,7981,7984],[15,7871,7872,7873,7878,7879,7885],{},"Not long ago, Anthropic engineer ",[45,7874,7877],{"href":7875,"rel":7876,"target":50,"title":4622},"https:\u002F\u002Fx.com\u002Ftrq212\u002Fstatus\u002F2052809885763747935",[49],"Thariq"," mentioned that, under the assumption that “humans no longer manually edit code,” ",[45,7880,7884],{"href":7881,"rel":7882,"target":50,"title":7883},"https:\u002F\u002Fwww.bnext.com.tw\u002Farticle\u002F90893\u002Fwhen-humans-stop-editing-ai-outputs-why-anthropic-engineers-are-switching-from-markdown-to-html",[49],"Open new Window","HTML is more suitable than Markdown for interacting with AI",".",[15,7887,7888],{},"That made me wonder: if AI is reading a high-quality accessible website, would it be easier for the AI to “understand” the website, and then produce better results when interacting with humans?",[10,7890,7892],{"id":7891},"first-lets-quickly-look-at-the-benefits-of-good-web-accessibility","First, let’s quickly look at the benefits of good web accessibility",[15,7894,7895],{},"Here are a few points from Taiwan’s “Accessible Web Development Service”:",[2200,7897,7898],{},[15,7899,7900],{},"Five major benefits of adopting accessibility\nLegal compliance: Meeting domestic legal requirements and protecting the rights of people with disabilities is our responsibility and obligation.\nExpanding service reach: Reaching around 1.2 million people with disabilities, as well as older adults, helps increase service coverage.\nCorporate social responsibility (CSR): Showing a commitment to social inclusion helps improve an organization’s public image and trust.\nBetter user experience: Good accessible design makes websites easier to use and improves satisfaction for all users.\nSEO optimization: Accessible websites with clear structure are more search-engine friendly and can help improve rankings.",[15,7902,7903],{},"The first point is a basic protection. Points 2, 3, and 4 are mostly about “serving people.” But for point 5, I think we should no longer see it only as “SEO optimization.” It should now become AXO optimization.",[10,7905,7907],{"id":7906},"how-does-web-accessibility-help-ai-interact-with-websites-better","How does web accessibility help AI interact with websites better?",[15,7909,7910],{},"When an AI Agent operates a website, what it fears most is not an ugly interface. What it fears is not knowing: “What is this?” “Can I click this?” “What happens after I click it?”",[15,7912,7913],{},"In the past, when we added a proper label to an input field, it was to help screen readers understand what that field was for. But now, AI Agents may also rely on that label to judge: “Is this a search field?” “Should this field contain a name, an email, or an address?”",[15,7915,7916],{},"There are many things humans can understand at a glance, but AI may not.",[15,7918,7919,7920,7925],{},"If accessibility is done well, AI Agents can use the accessibility tree to get cleaner, more concise information that is closer to what they actually need for interaction. LogRocket Blog",[45,7921,7924],{"href":7922,"rel":7923,"target":50,"title":4622},"https:\u002F\u002Fblog.logrocket.com\u002Fexploring-agent-browser-ai-agents-web\u002F",[49],"Link"," also mentioned that this helps AI Agents avoid having to guess their way through a messy DOM full of noise.",[15,7927,7928],{},"Take booking tickets as an example. While website A is still forcing the AI to parse a bunch of unclear elements, website B might already allow the AI to complete the booking successfully. For users, website B is faster. For AI service providers, website B also saves more resources.",[10,7930,7932],{"id":7931},"what-changes-will-this-bring","What changes will this bring?",[15,7934,7935,7936,7941],{},"No Hacks mentioned in the article ",[45,7937,7940],{"href":7938,"rel":7939,"target":50,"title":4622},"https:\u002F\u002Fnohacks.co\u002Fblog\u002Fhow-ai-agents-see-your-website",[49],"“HOW AI AGENTS SEE YOUR WEBSITE (AND HOW TO BUILD FOR THEM)”",":",[2200,7943,7944],{},[15,7945,7946],{},"Last year, before the European Accessibility Act took effect, I half-joked that it would be ironic if the thing that finally got people to care about accessibility was AI agents, not the people accessibility was designed for. That's no longer a joke.",[15,7948,7949],{},"I find this line really interesting, because it points out a new reality: accessibility technology is no longer only serving humans. It is also helping all kinds of “non-visual users” understand websites.",[15,7951,7952],{},"Because of this, the biggest change may be that more companies will start paying attention to accessibility.",[15,7954,7955],{},"But the motivation may shift from “legal compliance” to “business interest.”",[15,7957,7958],{},"If you do not do it, you may fail to serve users who rely on AI Agents to complete tasks. And that means you may lose business opportunities that could have turned into actual conversions.",[15,7960,7961],{},"Compared with SEO, AI Agents may have a more direct impact on revenue.",[15,7963,7964],{},"SEO is more like bringing people to the destination. After that, the website still needs to rely on content, flow, and persuasion to convert users. But AI Agents may directly help users get things done.",[15,7966,7967],{},"This also leads to a second impact: website analytics may change dramatically. As AI Agent usage grows, familiar metrics like “click-through rate,” “time on page,” and “conversion rate” may all need to be redefined.",[15,7969,7970],{},"This shift in motivation could theoretically create healthy competition, and it may also improve the overall accessibility environment on the web.",[15,7972,7973],{},"After all, the first step is still to increase the number of websites that actually meet accessibility standards.",[10,7975,7977],{"id":7976},"so-are-the-users-of-web-accessibility-really-changing","So, are the users of web accessibility really changing?",[15,7979,7980],{},"I don’t think they are changing. I think the scope is expanding, just like what happened with SEO in the past.",[15,7982,7983],{},"Although AI is now bringing a new wave of attention to accessibility, the focus will eventually come back to humans. A website is not just code, and it is not just an accessibility tree. It also includes flow design, content understanding, emotional experience, trust-building, and the real experience users have at every step.",[15,7985,7986],{},"So yes, AI may encourage more people to take accessibility seriously again. But the true core of accessibility is still helping people use websites more smoothly and more easily.",{"title":2284,"searchDepth":2285,"depth":2285,"links":7988},[7989,7990,7991,7992],{"id":7891,"depth":2288,"text":7892},{"id":7906,"depth":2288,"text":7907},{"id":7931,"depth":2288,"text":7932},{"id":7976,"depth":2288,"text":7977},"2026-05-13","Not long ago, Anthropic engineer Thariq mentioned that, under the assumption that “humans no longer manually edit code,” HTML is more suitable than Markdown for interacting with AI.",{},"\u002Fen\u002Fblog\u002Fa11y-tree-for-who",{"title":7867,"description":7994},"en\u002Fblog\u002Fa11y-tree-for-who",[8000,8001,2318,5233,8002,4646],"Anthropic","SocialResponsibility","AIAgent","qjbSfvHgdAu0Lfos0a5OclWYlT6oOCW_C0p7rYe4xFI",{"id":8005,"title":4609,"body":8006,"date":8173,"description":8174,"draft":2305,"extension":2306,"meta":8175,"navigation":2308,"ogImage":2309,"path":8176,"seo":8177,"stem":8178,"tags":8179,"translationKey":2309,"updatedAt":2309,"__hash__":8181},"blog_en\u002Fen\u002Fblog\u002Fai-sugar.md",{"type":7,"value":8007,"toc":8166},[8008,8012,8015,8018,8021,8024,8027,8031,8034,8037,8040,8043,8046,8049,8052,8055,8058,8061,8064,8067,8070,8073,8076,8079,8082,8085,8089,8092,8095,8098,8101,8104,8107,8110,8113,8117,8120,8123,8126,8129,8132,8135,8138,8141,8144,8147,8150,8153,8156,8158],[10,8009,8011],{"id":8010},"introduction","Introduction",[15,8013,8014],{},"A few days ago, Gemini’s automated scheduling system pushed me a daily accessibility-related article. The article described a service whose core technology allegedly uses AI to add web accessibility features during frontend rendering, while also offering personalized shortcut settings for users to adjust the website experience.",[15,8016,8017],{},"At first glance, this sounded exciting.",[15,8019,8020],{},"“AI that can add accessibility techniques during web rendering?”",[15,8022,8023],{},"I thought perhaps some new technology had finally been invented and applied in a practical way.",[15,8025,8026],{},"But after looking into it more carefully, my excitement quickly turned into disappointment — and eventually, anger.",[10,8028,8030],{"id":8029},"from-excitement-to-deep-disappointment","From Excitement to Deep Disappointment",[15,8032,8033],{},"The article that Gemini collected turned out to be, in essence, a sponsored article.",[15,8035,8036],{},"The service mentioned in the article talked about accessibility widgets — a type of solution that has already been widely questioned and has not been proven to meaningfully solve accessibility problems on the web.",[15,8038,8039],{},"Then the company explained how its technology was supposedly better than traditional widget-based solutions.",[15,8041,8042],{},"But in reality, what they were doing was simply adding accessibility-related DOM enhancements during page rendering. As for the “personalized shortcut settings” they provided, that part was basically no different from other accessibility widgets. The tools may vary, but the nature of the solution is largely the same.",[15,8044,8045],{},"How do I know?",[15,8047,8048],{},"Because I actually went to the company’s official website and also tested some of the e-commerce websites they claimed to support.",[15,8050,8051],{},"I opened every automated testing tool I had, ran the tests, and then followed up with my own manual accessibility review.",[15,8053,8054],{},"Here are some of the problems I found:",[15,8056,8057],{},"The service claimed that its AI could generate image alt descriptions based on images. But in practice, the descriptions were very generic — something like “a woman wearing a dress.” That kind of description provides very limited value.",[15,8059,8060],{},"There is a well-known accessibility principle: No ARIA is better than bad ARIA. But this technology seemed to add ARIA attributes almost everywhere it could, without considering whether they were necessary. For example, even buttons that already had visible text descriptions were still given additional ARIA labels.",[15,8062,8063],{},"The heading structure was not used in a proper order.",[15,8065,8066],{},"Color contrast still failed to meet WCAG 2.2 AA standards, not to mention the more advanced color-related expectations that may come with WCAG 3.0 in the future.",[15,8068,8069],{},"As for the widget part, it followed the same fundamental problems as many other similar products, so I will not go too deeply into that here.",[15,8071,8072],{},"In other words, even the most common accessibility issues seen across the web were not properly fixed. The site could not even pass basic automated checks like Lighthouse and axe-core. At that point, there was no need to even move into the deeper manual testing stage.",[15,8074,8075],{},"The problems on the company’s own website were already concerning. But when I tested the real customer websites in the domain they claimed to have specifically trained their technology for, the results were even more frustrating.",[15,8077,8078],{},"In some cases, even basic keyboard focus indicators were missing.",[15,8080,8081],{},"At that moment, I truly felt deceived.",[15,8083,8084],{},"I was genuinely angry.",[10,8086,8088],{"id":8087},"from-anger-to-gratitude","From Anger to Gratitude",[15,8090,8091],{},"But after the anger passed, I started to see the situation from another angle.",[15,8093,8094],{},"At least this company tried something new.",[15,8096,8097],{},"Throughout history, progress has often been built on failure. Without failed attempts, there is no foundation for future success.",[15,8099,8100],{},"With that in mind, I am still grateful that they took concrete action to implement their idea and launched a real product used by real customers.",[15,8102,8103],{},"Yes, the product has some effect.",[15,8105,8106],{},"But it also introduces more problems.",[15,8108,8109],{},"Still, they took a new step. Maybe this approach will improve over time.",[15,8111,8112],{},"After all, humans have always wanted to save effort while producing more. That desire has led to many great inventions.",[10,8114,8116],{"id":8115},"conclusion","Conclusion",[15,8118,8119],{},"AI is not omnipotent.",[15,8121,8122],{},"And AI that has not been properly trained is even more dangerous when applied carelessly.",[15,8124,8125],{},"Behind the sugar coating of AI, I still believe that products like this should go through complete testing before being released.",[15,8127,8128],{},"Or perhaps AI should be used more carefully in the development process itself — closer to the source of the website — rather than being applied as a patch after the fact.",[15,8130,8131],{},"Even better, accessibility should be planned from the design stage, where standards, structure, interaction, and content can be considered from the beginning.",[15,8133,8134],{},"I once experimented with adding a widget to a website. But instead of filling it with a bunch of setting buttons, I made it an AI chat interface. Through conversation, users could change different aspects of the website’s presentation.",[15,8136,8137],{},"The experiment worked.",[15,8139,8140],{},"But the cost was extremely high.",[15,8142,8143],{},"And another issue appeared: users started focusing on the chat window itself, which created new accessibility and usability problems.",[15,8145,8146],{},"So yes, AI may be useful.",[15,8148,8149],{},"But AI should not become a beautiful wrapper around an incomplete solution.",[15,8151,8152],{},"Accessibility is not something that can simply be sprinkled onto a website after it is built.",[15,8154,8155],{},"And it should never be treated as a marketing feature covered in AI sugar.",[10,8157,4601],{"id":4600},[29,8159,8160],{},[32,8161,8162],{},[45,8163,8165],{"href":8164},"\u002Fen\u002Fblog\u002Fai-reliable-researcher\u002F","AI Is Great at Research — But Is It a Reliable Researcher?",{"title":2284,"searchDepth":2285,"depth":2285,"links":8167},[8168,8169,8170,8171,8172],{"id":8010,"depth":2288,"text":8011},{"id":8029,"depth":2288,"text":8030},{"id":8087,"depth":2288,"text":8088},{"id":8115,"depth":2288,"text":8116},{"id":4600,"depth":2288,"text":4601},"2026-05-08","When AI promises to fix web accessibility at runtime, but ends up repeating the same old widget problem.",{},"\u002Fen\u002Fblog\u002Fai-sugar",{"title":4609,"description":8174},"en\u002Fblog\u002Fai-sugar",[4644,5233,2318,8180],"Widget","R7I8W2WUDg9829hTvPZafXnHjZpGcBIJ_sG_6ZFwABk",{"id":8183,"title":8184,"body":8185,"date":8224,"description":8225,"draft":2305,"extension":2306,"meta":8226,"navigation":2308,"ogImage":2309,"path":8227,"seo":8228,"stem":8229,"tags":8230,"translationKey":2309,"updatedAt":2309,"__hash__":8232},"blog_en\u002Fen\u002Fblog\u002F2026-04-a11y-opinion.md","Reflections on Digital Accessibility (April 2026)",{"type":7,"value":8186,"toc":8222},[8187,8190,8199,8202,8205,8214,8219],[15,8188,8189],{},"Watching the current wave of AI tools, the shifts in digital accessibility, and the growth of job roles in this field, I see AI-powered A11y auditing and Agent Skills booming. While I’ve personally benefited from these, I’m left with a deeper sense of uncertainty: To what extent can AI truly help digital accessibility become universal? Or more importantly, how can I make AI do it?",[15,8191,8192,8193,8198],{},"I previously built ",[45,8194,8197],{"href":8195,"rel":8196,"target":50,"title":4622},"https:\u002F\u002Faccesserty.com",[49],"Accesserty",", a side project designed as an ecosystem connecting everything from user interaction to enterprise production, auditing, and analytics. The goal was to make accessibility profitable for businesses so they would fully embrace it. However, the reality is that many steps still require high costs, and sustainable maintenance remains a massive challenge.",[15,8200,8201],{},"AI still hasn’t made these processes “easy,” especially when it comes to manual auditing, where its help is still limited. To be honest, I feel a bit frustrated. My previous framework was based on current development workflows — essentially a “cost-reduction” approach. Perhaps I need a disruptive innovation to break through this “AI is great but limited” deadlock.",[15,8203,8204],{},"I’ve also noticed a trend: while designers and influencers in my environment are becoming more aware of digital accessibility, most are still just solving common issues. Their understanding of the broader A11y knowledge base is still shallow. The industry is stuck in a “get-by” phase — using tools just to pass compliance. There’s no big shift because accessibility hasn’t yet proven to bring clear benefits to businesses. Most are driven by the “fear of being fined” or by ESG requirements.",[15,8206,8207,8208,8213],{},"This quote from a recent article on ",[45,8209,8212],{"href":8210,"rel":8211,"target":50,"title":4622},"https:\u002F\u002Fwww.a11yjobs.com\u002F",[49],"a11yjobs"," hits home:",[2200,8215,8216],{},[15,8217,8218],{},"\"Much of the hiring activity is concentrated in a narrow band of roles, driven by compliance pressures rather than genuine organizational buy-in. Companies are hiring because they have to — not always because they want to build lasting accessibility practices.\"",[15,8220,8221],{},"Both approaches are “doing accessibility,” but the starting point changes everything. This will be the focus of my research in the next stage.",{"title":2284,"searchDepth":2285,"depth":2285,"links":8223},[],"2026-04-30","Some thoughts on Digital Accessibility and AI.",{},"\u002Fen\u002Fblog\u002F2026-04-a11y-opinion",{"title":8184,"description":8225},"en\u002Fblog\u002F2026-04-a11y-opinion",[5233,2318,8212,8231],"WebDesign","Vz25GJ6HbXpE86nks9ivJAglkrxAqwADhduDWMUbYqc",{"id":8234,"title":8235,"body":8236,"date":8464,"description":8245,"draft":2305,"extension":2306,"meta":8465,"navigation":2308,"ogImage":2309,"path":8466,"seo":8467,"stem":8468,"tags":8469,"translationKey":2309,"updatedAt":8472,"__hash__":8473},"blog_en\u002Fen\u002Fblog\u002Fa11y-dev-tool.md","Accesserty DevCheck — Simulate and Detect Accessibility Challenges Before You Ship",{"type":7,"value":8237,"toc":8457},[8238,8241,8243,8246,8249,8252,8269,8272,8275,8279,8282,8285,8302,8305,8309,8312,8353,8357,8385,8389,8406,8410,8413,8416,8419,8430,8433,8436,8451,8454],[15,8239,8240],{},"2026\u002F06\u002F22 update：Added image alt suggestion by Gemini。",[15,8242,5212],{},[15,8244,8245],{},"Stop waiting for complaints. Start feeling what your users feel — directly inside your dev workflow.",[15,8247,8248],{},"When we talk about accessibility, most people think of checklists, screen readers, or legal compliance.",[15,8250,8251],{},"But real accessibility issues don’t always show up in audits.\nThey show up when:",[29,8253,8254,8257,8260,8263,8266],{},[32,8255,8256],{},"A user can’t tell where the content begins",[32,8258,8259],{},"A button is too small for touch",[32,8261,8262],{},"Text is blurry for someone with poor vision",[32,8264,8265],{},"A flashing banner causes discomfort",[32,8267,8268],{},"A layout breaks when text size increases",[15,8270,8271],{},"These problems often go unnoticed — until it’s too late.",[15,8273,8274],{},"That’s why I built Accesserty DevCheck:\nA developer tool that helps you simulate real-world accessibility challenges and run basic tests, all from your browser.",[10,8276,8278],{"id":8277},"why-simulation-matters","Why Simulation Matters",[15,8280,8281],{},"Automated tools like Lighthouse or axe-core can check for missing alt text, bad heading structure, or missing ARIA labels.",[15,8283,8284],{},"But they can’t tell you what it’s like to actually use your product if:",[29,8286,8287,8290,8293,8296,8299],{},[32,8288,8289],{},"You have color blindness",[32,8291,8292],{},"You experience visual blur or cataracts",[32,8294,8295],{},"You can’t see part of the screen",[32,8297,8298],{},"You use only one finger on a touchscreen",[32,8300,8301],{},"You rely on large text or dark modes",[15,8303,8304],{},"That’s where DevCheck’s simulation layer comes in.",[10,8306,8308],{"id":8307},"what-devcheck-offers","What DevCheck Offers",[15,8310,8311],{},"These tools let you experience a website the way many users do — with visual or interaction limitations:",[29,8313,8314,8317,8320,8323,8326,8329,8332,8335,8338,8341,8344,8347,8350],{},[32,8315,8316],{},"Color Blindness Simulation\n(Red-green, blue-yellow, total monochrome, and more)",[32,8318,8319],{},"Visual Blur Simulation",[32,8321,8322],{},"Myopia (full blur)",[32,8324,8325],{},"Presbyopia (center blur)",[32,8327,8328],{},"Cataracts (glare + fog)",[32,8330,8331],{},"Screen Occlusion",[32,8333,8334],{},"Simulate partial visual field loss (common with eye diseases)",[32,8336,8337],{},"Large Text \u002F Increased Spacing",[32,8339,8340],{},"Helps test responsive behavior under assistive settings",[32,8342,8343],{},"Color Inversion Mode",[32,8345,8346],{},"Simulate forced dark mode effects",[32,8348,8349],{},"Finger Tap Zone Simulation",[32,8351,8352],{},"Shows a 64px circle around your cursor to test if small clickable areas are accessible",[10,8354,8356],{"id":8355},"detection-tools-debug-mode","Detection Tools (Debug Mode)",[29,8358,8359,8362,8365],{},[32,8360,8361],{},"axe-core audit",[32,8363,8364],{},"Run in-browser checks for common violations",[32,8366,8367,8368],{},"(Coming Soon)\n",[29,8369,8370,8373,8376,8379,8382],{},[32,8371,8372],{},"Image alt text analysis",[32,8374,8375],{},"Heading structure visualizer",[32,8377,8378],{},"Landmark checks",[32,8380,8381],{},"SEO metadata detection",[32,8383,8384],{},"ARIA misuse warnings",[10,8386,8388],{"id":8387},"who-is-it-for","Who is it for?",[29,8390,8391,8394,8397,8400,8403],{},[32,8392,8393],{},"Frontend developers — Test as you build",[32,8395,8396],{},"Designers — Validate layouts, spacing, and color choices",[32,8398,8399],{},"PMs — Simulate user pain points before demo day",[32,8401,8402],{},"Testers — Reproduce visual experience issues",[32,8404,8405],{},"Customer support — Understand user complaints better",[10,8407,8409],{"id":8408},"its-not-about-compliance-its-about-empathy","It’s not about compliance — it’s about empathy",[15,8411,8412],{},"Most users won’t report accessibility issues.",[15,8414,8415],{},"Why?",[15,8417,8418],{},"Because:",[29,8420,8421,8424,8427],{},[32,8422,8423],{},"They don’t know how",[32,8425,8426],{},"They don’t know who to tell",[32,8428,8429],{},"They don’t believe anything will change",[15,8431,8432],{},"DevCheck gives you a way to feel what they feel — before they bounce, quit, or struggle in silence.",[15,8434,8435],{},"Try Accesserty DevCheck Now:",[29,8437,8438,8444],{},[32,8439,8440],{},[45,8441,8011],{"href":8442,"rel":8443,"target":50,"title":4622},"https:\u002F\u002Faccesserty.com\u002Fdevcheck",[49],[32,8445,8446],{},[45,8447,8450],{"href":8448,"rel":8449,"target":50,"title":4622},"https:\u002F\u002Fchromewebstore.google.com\u002Fdetail\u002Faccesserty-devcheck\u002Fompbhahmipenipgiiiehbkiibkonoeec",[49],"Chrome Extension",[15,8452,8453],{},"You don’t have to be an accessibility expert.",[15,8455,8456],{},"You just need the curiosity to simulate, and the willingness to adjust before it hurts.",{"title":2284,"searchDepth":2285,"depth":2285,"links":8458},[8459,8460,8461,8462,8463],{"id":8277,"depth":2288,"text":8278},{"id":8307,"depth":2288,"text":8308},{"id":8355,"depth":2288,"text":8356},{"id":8387,"depth":2288,"text":8388},{"id":8408,"depth":2288,"text":8409},"2025-05-31",{},"\u002Fen\u002Fblog\u002Fa11y-dev-tool",{"title":8235,"description":8245},"en\u002Fblog\u002Fa11y-dev-tool",[8470,5233,2318,8471],"ChromeExtension","DevTool","2026-06-22","9ebSB5oBE1IVi29IEoukEPZqLdcEOMlZoNKN2BMepDU",{"id":8475,"title":8476,"body":8477,"date":8651,"description":8652,"draft":2305,"extension":2306,"meta":8653,"navigation":2308,"ogImage":2309,"path":8654,"seo":8655,"stem":8656,"tags":8657,"translationKey":2309,"updatedAt":8472,"__hash__":8659},"blog_en\u002Fen\u002Fblog\u002Fsearch-good-website.md","The Invisible Experience Gap  —  Why It’s So Hard to Find Truly Usable Websites",{"type":7,"value":8478,"toc":8643},[8479,8482,8484,8488,8508,8512,8515,8529,8532,8536,8539,8544,8547,8552,8555,8564,8568,8571,8574,8582,8585,8588,8592,8595,8598,8609,8612,8615,8619,8622,8627,8630,8633,8636],[15,8480,8481],{},"2026\u002F06\u002F22 update：now remove Google Lighthouse.",[15,8483,5212],{},[10,8485,8487],{"id":8486},"_1-a-familiar-frustrating-scene","1. A familiar, frustrating scene",[2200,8489,8490],{},[15,8491,8492,8493,8495,8496,8498,8499,8501,8502,8504,8505,8507],{},"You open Google, type in your query, and ten blue links appear.",[7841,8494],{},"\nYou click the first one — it’s full of ads, so you close it.",[7841,8497],{},"\nThe second — tons of images, but no useful content.",[7841,8500],{},"\nThe third — you press the Tab key a few times, and the cursor disappears somewhere…",[7841,8503],{},"\nEventually, you wonder:",[7841,8506],{},"\nAm I just being too picky?",[10,8509,8511],{"id":8510},"_2-the-problem-isnt-too-much-information-its-that-we-cant-see-usability","2. The problem isn’t “too much information” — it’s that we can’t see usability",[15,8513,8514],{},"Most modern search engines rank results based on SEO, page speed, and content density. But what actually makes a site usable is deeply practical — and often subjective:",[29,8516,8517,8520,8523,8526],{},[32,8518,8519],{},"Can you navigate with just a keyboard?",[32,8521,8522],{},"Do the headings make sense?",[32,8524,8525],{},"Are ads covering the main content?",[32,8527,8528],{},"Is the color contrast strong enough to read comfortably?",[15,8530,8531],{},"These aren’t things we can evaluate from a link preview.\nWe only find out after clicking — by spending time, patience, and emotional energy.",[10,8533,8535],{"id":8534},"_3-what-i-wanted-to-change-make-experience-visible-before-you-click","3. What I wanted to change: Make experience visible before you click",[15,8537,8538],{},"That’s when I started wondering:",[2200,8540,8541],{},[15,8542,8543],{},"What if you could see a website’s accessibility state right at the moment of search?",[15,8545,8546],{},"Not to assign ratings.\nNot to label or shame anyone.\nBut to simply ask:",[2200,8548,8549],{},[15,8550,8551],{},"“Has this website made an effort to be comfortable and usable?”",[15,8553,8554],{},"I’m not trying to build a new search engine.\nI just want to make user experience visible, at a glance.",[15,8556,8557,8558,8563],{},"That’s where the idea for ",[45,8559,8562],{"href":8560,"rel":8561,"target":50,"title":4622},"https:\u002F\u002Faccesserty.com\u002Fsignal\u002F",[49],"Accesserty Signal"," began.",[10,8565,8567],{"id":8566},"what-is-signal","What is Signal?",[15,8569,8570],{},"It’s not a rating — it’s a helper for decision-making",[15,8572,8573],{},"Accesserty Signal is a lightweight Chrome extension that adds a simple badge to each Google search result:",[7209,8575,8576],{},[15,8577,8578],{},[7214,8579],{"alt":8580,"src":8581},"Google search result list: Lighthouse Score","\u002Fimages\u002Fblog\u002F44.png",[15,8583,8584],{},"This number comes from Lighthouse, a widely used accessibility audit tool.\nIt’s explainable, standardized, and easy to compare.",[15,8586,8587],{},"It’s not a judgment.\nIt’s not a curated “good websites only” list.\nIt’s just a small clue to help users choose where to click.",[10,8589,8591],{"id":8590},"why-i-refused-to-make-it-a-rating-system","Why I refused to make it a rating system",[15,8593,8594],{},"Because I didn’t want this to become another “score game.”",[15,8596,8597],{},"Too many platforms reduce experience to 1–5 stars, and it always ends up with:",[29,8599,8600,8603,8606],{},[32,8601,8602],{},"Manipulated ratings (via marketing bots)",[32,8604,8605],{},"Misleading reviews (1-star due to a bad mood, not the product)",[32,8607,8608],{},"Used to pressure creators (“fix this or we’ll expose you”)",[15,8610,8611],{},"I wanted to avoid all of that.",[15,8613,8614],{},"The accessibility score in Accesserty Signal is just a neutral indicator.\nReal improvement still depends on whether the website wants to improve.",[10,8616,8618],{"id":8617},"its-just-the-beginning-but-it-adds-a-little-transparency","It’s just the beginning — but it adds a little transparency",[15,8620,8621],{},"I know Accesserty Signal won’t change the web overnight.\nBut it does one small thing:",[2200,8623,8624],{},[15,8625,8626],{},"It makes experience visible — not something users have to discover the hard way.",[15,8628,8629],{},"If you’ve ever hesitated before clicking a link, unsure if the site would be a pain…",[15,8631,8632],{},"If you’ve ever closed a site because it felt too messy or hostile…",[15,8634,8635],{},"Then you’ve already felt the invisibility of user experience.",[15,8637,8638,8642],{},[45,8639,8197],{"href":8640,"rel":8641,"target":50,"title":4622},"https:\u002F\u002Faccesserty.com\u002F",[49]," is my way of trying to make that gap more visible, understandable, and improvable — one badge at a time.",{"title":2284,"searchDepth":2285,"depth":2285,"links":8644},[8645,8646,8647,8648,8649,8650],{"id":8486,"depth":2288,"text":8487},{"id":8510,"depth":2288,"text":8511},{"id":8534,"depth":2288,"text":8535},{"id":8566,"depth":2288,"text":8567},{"id":8590,"depth":2288,"text":8591},{"id":8617,"depth":2288,"text":8618},"2025-05-29","Why I decided to display accessibility signals in search results.",{},"\u002Fen\u002Fblog\u002Fsearch-good-website",{"title":8476,"description":8652},"en\u002Fblog\u002Fsearch-good-website",[8470,5233,2318,8658],"Usability","3RumyZrq5R0cNNOs7xcCuxYl_e_ZOcSTbzXgx8J_OuI",{"id":8661,"title":8662,"body":8663,"date":8935,"description":8936,"draft":2305,"extension":2306,"meta":8937,"navigation":2308,"ogImage":2309,"path":8938,"seo":8939,"stem":8940,"tags":8941,"translationKey":2309,"updatedAt":2309,"__hash__":8944},"blog_en\u002Fen\u002Fblog\u002Fbuilding-accesserty-an-accessibility-experience-from-search-to-development.md","Building Accesserty — An Accessibility Experience from Search to Development",{"type":7,"value":8664,"toc":8925},[8665,8668,8672,8675,8678,8681,8685,8689,8692,8695,8698,8701,8705,8708,8711,8722,8725,8731,8734,8737,8740,8743,8746,8749,8753,8756,8763,8766,8772,8775,8779,8782,8785,8788,8791,8794,8807,8810,8814,8884,8888,8891,8899,8903,8906,8909,8912,8916],[15,8666,8667],{},"Today, I’d like to share the story behind Accesserty, a small product ecosystem I built in about a month, aimed at improving the accessible web experience. From the moment users search to the moment developers build, I wanted to offer a calm, practical set of tools to make accessibility visible, understandable, and actionable.",[10,8669,8671],{"id":8670},"origin-curiosity-about-chrome-extensions","Origin: Curiosity about Chrome Extensions",[15,8673,8674],{},"Back in 2023, I created my first Chrome extension — Report Website Issues — simply out of curiosity.",[15,8676,8677],{},"Now in 2025, with the rise of large language models (LLMs), I began thinking about how AI might help me build tools that address real-world accessibility challenges.",[15,8679,8680],{},"I experimented with assigning LLMs different “roles” — product manager, frontend dev, accessibility analyst — and used them to speed up system design and implementation.",[10,8682,8684],{"id":8683},"identifying-the-problems","Identifying the Problems",[4689,8686,8688],{"id":8687},"_1-after-searching-users-still-dont-know-which-link-to-click","1. After searching, users still don’t know which link to click",[15,8690,8691],{},"Search engines consider SEO, performance, and content, but that doesn’t mean the top results are easy to use — especially for people who rely on keyboard navigation or screen readers.",[15,8693,8694],{},"Sites may appear technically sound but be visually cluttered, hard to navigate, or inaccessible by design.\nSo I started wondering:",[15,8696,8697],{},"What if I could see how accessible a site is — right from the search result list?",[15,8699,8700],{},"It would save time, reduce frustration, and help everyone make more informed choices.",[4689,8702,8704],{"id":8703},"_2-users-often-have-no-way-to-report-issues","2. Users often have no way to report issues",[15,8706,8707],{},"Even if a user encounters a serious accessibility problem, it’s often unclear how to report it — or if it will even be taken seriously.",[15,8709,8710],{},"Worse, communication gaps happen. Like in a case I mentioned in an earlier post:",[2200,8712,8713],{},[15,8714,8715,8716,8718,8719,8721],{},"A user says: “I can’t browse your site using the keyboard.”",[7841,8717],{},"\nA support rep replies: “It works fine for me — maybe try again?”",[7841,8720],{},"\nBut they’re talking about different things. One refers to keyboard focus logic; the other is just pressing the down arrow key. They both get frustrated.",[15,8723,8724],{},"So I realized there needs to be a “bridge” — someone or something that helps users explain issues clearly and helps developers receive usable feedback.\nRight now, LLMs might help with summarization, but the cost and accuracy are still limiting.",[15,8726,8727,8730],{},[25,8728,8729],{},"3. Is accessibility really expensive for developers?","\nWith recent EU regulations, many UI frameworks now include more accessible components — that’s progress.\nBut passing machine audits isn’t enough.",[15,8732,8733],{},"Compliance ≠ usability.",[15,8735,8736],{},"Take text, for instance. A machine can check if it’s there —\nbut only a human can tell if it actually describes the image meaningfully in context.alt",[15,8738,8739],{},"Even if LLMs could generate decent descriptions, that still involves API costs, image parsing, and prompt design — not to mention hallucination risks.",[15,8741,8742],{},"That led me to a fundamental insight:",[15,8744,8745],{},"The earlier you address accessibility, the lower the cost.",[15,8747,8748],{},"From planning to design to engineering, everyone needs to be aligned early.\nThis diagram sums it up well:",[10,8750,8752],{"id":8751},"solutions-simulate-detect-report","Solutions: Simulate, Detect, Report",[15,8754,8755],{},"Based on these observations, I created a journey map to visualize the pain points across users, developers, and site owners.",[8757,8758],"embed",{"height":8759,"src":8760,"type":8761,"width":8762},"480px","https:\u002F\u002Fwhimsical.com\u002Fembed\u002FNDhUK17ebjwRtaH4kLoMU4","application\u002Fpdf","100%",[15,8764,8765],{},"I divided the process into two phases:",[15,8767,8768,8769,8771],{},"Prevention — Help build accessibility in early",[7841,8770],{},"\nRemediation — Identify and fix real-world issues through feedback",[15,8773,8774],{},"The goal: a sustainable feedback loop where everyone benefits.",[10,8776,8778],{"id":8777},"building-the-accesserty-brand","Building the Accesserty Brand",[15,8780,8781],{},"Many a11y tools try to scare developers into action — with stories of lawsuits or million-dollar fines.",[15,8783,8784],{},"I didn’t want to do that.\nInstead, I wanted to design something that felt rational, respectful, and constructive.",[15,8786,8787],{},"So with help from my “product manager” (aka ChatGPT 😎), I defined Accesserty’s brand principles:",[15,8789,8790],{},"We aim to be…Calm, clear, transparent, inclusive",[15,8792,8793],{},"And we avoid…Fear-driven messaging, tokenism, accessibility as an afterthought",[7209,8795,8796,8802],{},[15,8797,8798],{},[7214,8799],{"alt":8800,"src":8801},"ChatGPT UI: project folder and chat","\u002Fimages\u002Fblog\u002F1.webp",[7219,8803,8804],{},[15,8805,8806],{},"I even used ChatGPT’s new project folder mode to keep a shared background doc, flowcharts, and multiple conversations — as if working with a real team.",[15,8808,8809],{},"With the structure aligned, I started coding the actual tools — one by one — with the help of Chrome Extension, Web Components, AppSheet, and some Vibe Coding.",[10,8811,8813],{"id":8812},"the-accesserty-ecosystem","The Accesserty Ecosystem",[29,8815,8816,8832,8846,8867],{},[32,8817,8818,8819,8821,8826,8828],{},"Accesserty Signal\nSee accessibility status directly in Google Search",[7841,8820],{},[45,8822,8011],{"href":8823,"rel":8824,"target":50,"title":8825},"http:\u002F\u002Faccesserty.com\u002Fen\u002Fsignal",[49],"Open New Window",[7841,8827],{},[45,8829,8450],{"href":8830,"rel":8831,"target":50,"title":8825},"https:\u002F\u002Fchromewebstore.google.com\u002Fdetail\u002Faccesserty-signal\u002Fjabgpbgdmhdmibhogmcjfinnkcngcelc",[49],[32,8833,8834,8835,8837,8841,8843],{},"Accesserty DevCheck\nSimulate vision impairments, detect violations (e.g., color blindness, alt text, heading issues)",[7841,8836],{},[45,8838,8011],{"href":8839,"rel":8840,"target":50,"title":8825},"http:\u002F\u002Faccesserty.com\u002Fen\u002Fdevcheck",[49],[7841,8842],{},[45,8844,8450],{"href":8448,"rel":8845,"target":50,"title":8825},[49],[32,8847,8848,8849,8853,8855,8860,8862],{},"Accesserty UI Kit\nBuild with accessible Web Components from day one\n",[45,8850,8011],{"href":8851,"rel":8852,"target":50,"title":8825},"https:\u002F\u002Faccesserty.com\u002Fen\u002Fuikit",[49],[7841,8854],{},[45,8856,8859],{"href":8857,"rel":8858,"target":50,"title":8825},"https:\u002F\u002Fgithub.com\u002FAccesserty\u002FUI-Kit",[49],"Github",[7841,8861],{},[45,8863,8866],{"href":8864,"rel":8865,"target":50,"title":8825},"https:\u002F\u002Faccesserty.com\u002Fen\u002Fuikit\u002Fplayground",[49],"Playground",[32,8868,8869,8870,8872,8877,8878,8880,8881,8883],{},"Accesserty Pulse.",[7841,8871],{},[45,8873,8876],{"href":8874,"rel":8875,"target":50,"title":8825},"https:\u002F\u002Faccesserty.com\u002Fen\u002Fpulse",[49],"Pulse"," — A service dedicated to capturing user frustration.",[7841,8879],{},"\nIntroduction",[7841,8882],{},"\nBuilt solo, with AI as a thought partner, and designed for low-maintenance sustainability.",[10,8885,8887],{"id":8886},"launched-on-gaad","Launched on GAAD 🎉",[15,8889,8890],{},"I chose to launch Accesserty on Global Accessibility Awareness Day (GAAD) —\nthe third Thursday of May, every year.",[15,8892,8893,8894],{},"You can find it on ",[45,8895,8898],{"href":8896,"rel":8897,"target":50,"title":8825},"https:\u002F\u002Fwww.producthunt.com\u002Fproducts\u002Freport-website-issues?launch=accesserty",[49],"Product Hunt",[10,8900,8902],{"id":8901},"my-hope-is-that-this-helps-show","My hope is that this helps show:",[15,8904,8905],{},"You don’t need a big team or budget to make the web more accessible.\nWith the right mindset and tools, transparency and improvement can happen — at scale, and with care.",[15,8907,8908],{},"If you’ve ever felt unsure which site to trust when searching, or if you’ve ever hit an accessibility wall and had nowhere to report it —\nAccesserty was built for you.",[15,8910,8911],{},"I’d love to hear your thoughts, feedback, or even ideas for collaboration.",[10,8913,8915],{"id":8914},"related-links","Related Links",[29,8917,8918],{},[32,8919,8920],{},[45,8921,8924],{"href":8922,"rel":8923,"target":50,"title":8825},"https:\u002F\u002Faccessibility.day",[49],"GAAD Website",{"title":2284,"searchDepth":2285,"depth":2285,"links":8926},[8927,8928,8929,8930,8931,8932,8933,8934],{"id":8670,"depth":2288,"text":8671},{"id":8683,"depth":2288,"text":8684},{"id":8751,"depth":2288,"text":8752},{"id":8777,"depth":2288,"text":8778},{"id":8812,"depth":2288,"text":8813},{"id":8886,"depth":2288,"text":8887},{"id":8901,"depth":2288,"text":8902},{"id":8914,"depth":2288,"text":8915},"2025-05-23","A small product ecosystem I built in about a month, aimed at improving the accessible web experience.",{},"\u002Fen\u002Fblog\u002Fbuilding-accesserty-an-accessibility-experience-from-search-to-development",{"title":8662,"description":8936},"en\u002Fblog\u002Fbuilding-accesserty-an-accessibility-experience-from-search-to-development",[2318,8450,8942,8943],"ProductHunt","Solo Founder","wTUjNqtnxOWObgU7t01VFkwf30wtZ8vGImj8U-W7g0k",1788091802316]