{"id":27401397,"date":"2024-08-19T17:50:57","date_gmt":"2024-08-19T15:50:57","guid":{"rendered":"https:\/\/www.digiaccion.com\/?page_id=27401397"},"modified":"2026-10-21T22:41:58","modified_gmt":"2026-10-21T20:41:58","slug":"online-ruler-inches","status":"publish","type":"page","link":"https:\/\/www.digiaccion.com\/en\/online-ruler-inches\/","title":{"rendered":"Online Ruler in Inches: Actual Size Ruler | DigiAcci\u00f3n"},"content":{"rendered":"<div class=\"et_pb_section_0 et_pb_section et_section_regular et_flex_section preset--module--divi-section--default\">\n<div class=\"et_pb_row_0 et_pb_row et_flex_row preset--module--divi-row--default\">\n<div class=\"et_pb_column_0 et_pb_column et-last-child et_flex_column et_pb_css_mix_blend_mode_passthrough et_flex_column_24_24 et_flex_column_24_24_tablet et_flex_column_24_24_phone preset--module--divi-column--default\">\n<div class=\"et_pb_code_0 et_pb_code et_pb_module\"><div class=\"et_pb_code_inner\"><!-- DigiAcci\u00f3n | Herramienta: Online ruler in inches (actual size) | English | entrega v13 | 2026-10-20\n     Pegar tal cual en el m\u00f3dulo C\u00f3digo de la \u00fanica secci\u00f3n de la p\u00e1gina. Sin secci\u00f3n de contacto debajo: el c\u00f3digo\n     termina con su propio CTA (contacto y WhatsApp) y los servicios.\n     Los estilos se cargan desde verticales.css del hosting (v12). Dentro: HTML (ra\u00edz .dgv.dgt), JSON-LD\n     (WebApplication creada por DigiAcci\u00f3n + FAQPage) y JS. Sin caracteres de 4 bytes: los emojis van como entidades. -->\n<link rel=\"stylesheet\" id=\"dgv-css\" href=\"https:\/\/www.digiaccion.com\/wp-content\/uploads\/digiaccion-verticales\/verticales.css?v=12\">\n<div class=\"dgv dgt ui-no-swap\" lang=\"en\" data-dgv=\"herramienta-regla-pulgadas\" data-dgt=\"regla-pulgadas\">\n<svg class=\"dgv-sprite\" aria-hidden=\"true\" focusable=\"false\"><symbol id=\"dgv-i-arrow\" viewBox=\"0 0 24 24\"><path d=\"M5 12h14M13 6l6 6-6 6\"\/><\/symbol><symbol id=\"dgv-i-bed\" viewBox=\"0 0 24 24\"><path d=\"M3 18.5V6M3 14h18v4.5M21 14v-2.5a3 3 0 0 0-3-3h-7v5.5\"\/><circle cx=\"7\" cy=\"11\" r=\"2\"\/><\/symbol><symbol id=\"dgv-i-bolt\" viewBox=\"0 0 24 24\"><path d=\"M13 2.5 4.5 13.5H11l-1 8 8.5-11H12l1-8z\"\/><\/symbol><symbol id=\"dgv-i-briefcase\" viewBox=\"0 0 24 24\"><rect x=\"3.5\" y=\"7\" width=\"17\" height=\"12.5\" rx=\"2.5\"\/><path d=\"M9 7V5.5A1.5 1.5 0 0 1 10.5 4h3A1.5 1.5 0 0 1 15 5.5V7M3.5 12.5h17\"\/><\/symbol><symbol id=\"dgv-i-chart\" viewBox=\"0 0 24 24\"><path d=\"M4 19.5h16M7 16v-4M12 16V8M17 16V5\"\/><\/symbol><symbol id=\"dgv-i-check\" viewBox=\"0 0 24 24\"><path d=\"m5 12.5 4.5 4.5L19 7.5\"\/><\/symbol><symbol id=\"dgv-i-chev\" viewBox=\"0 0 24 24\"><path d=\"m6 9 6 6 6-6\"\/><\/symbol><symbol id=\"dgv-i-compass\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"4.5\" r=\"1.5\"\/><path d=\"M11.2 5.8 5.5 20M12.8 5.8 18.5 20M8 14h8\"\/><\/symbol><symbol id=\"dgv-i-cpu\" viewBox=\"0 0 24 24\"><rect x=\"6\" y=\"6\" width=\"12\" height=\"12\" rx=\"2\"\/><rect x=\"9.5\" y=\"9.5\" width=\"5\" height=\"5\" rx=\"1\"\/><path d=\"M9.5 3v3M14.5 3v3M9.5 18v3M14.5 18v3M3 9.5h3M3 14.5h3M18 9.5h3M18 14.5h3\"\/><\/symbol><symbol id=\"dgv-i-crane\" viewBox=\"0 0 24 24\"><path d=\"M5 21V4l13 3H5M9 4l9 3M18 7v5M16.5 12h3v2.5h-3zM3 21h8\"\/><\/symbol><symbol id=\"dgv-i-dumbbell\" viewBox=\"0 0 24 24\"><path d=\"M6.5 6.5v11M17.5 6.5v11M3.5 9v6M20.5 9v6M6.5 12h11\"\/><\/symbol><symbol id=\"dgv-i-food\" viewBox=\"0 0 24 24\"><path d=\"M7 3v8M5 3v5a2 2 0 0 0 4 0V3M7 11v10M16.5 21V3c-2 1.5-3 4-3 7 0 1.5.8 2.5 3 2.5\"\/><\/symbol><symbol id=\"dgv-i-hanger\" viewBox=\"0 0 24 24\"><path d=\"M12 8.5a2 2 0 1 1 2-2c0 1-.8 1.4-1.4 1.8-.4.3-.6.6-.6 1.2v.5L3.5 15.5a1.5 1.5 0 0 0 .9 2.7h15.2a1.5 1.5 0 0 0 .9-2.7L12 10\"\/><\/symbol><symbol id=\"dgv-i-health\" viewBox=\"0 0 24 24\"><path d=\"M12 20s-7.5-4.6-7.5-10A4.3 4.3 0 0 1 12 7.5 4.3 4.3 0 0 1 19.5 10c0 5.4-7.5 10-7.5 10z\"\/><path d=\"M9.5 12h5M12 9.5v5\"\/><\/symbol><symbol id=\"dgv-i-home\" viewBox=\"0 0 24 24\"><path d=\"M3.5 11 12 4l8.5 7\"\/><path d=\"M5.5 9.5V20h13V9.5M10 20v-5.5h4V20\"\/><\/symbol><symbol id=\"dgv-i-kana\" viewBox=\"0 0 24 24\"><path d=\"M5 8h9M9.5 5c-.5 6-2 10-4.5 13M8 12c3 0 7 1 9 5M16 5.5l2.5 2.5\"\/><\/symbol><symbol id=\"dgv-i-layout\" viewBox=\"0 0 24 24\"><rect x=\"3\" y=\"4\" width=\"18\" height=\"16\" rx=\"2.5\"\/><path d=\"M3 9h18M9 9v11\"\/><\/symbol><symbol id=\"dgv-i-megaphone\" viewBox=\"0 0 24 24\"><path d=\"M4 10v4a1 1 0 0 0 1 1h2l6 4.5v-15L7 9H5a1 1 0 0 0-1 1z\"\/><path d=\"M16.5 9a4 4 0 0 1 0 6M19 6.5a7.5 7.5 0 0 1 0 11\"\/><\/symbol><symbol id=\"dgv-i-minus\" viewBox=\"0 0 24 24\"><path d=\"M5.5 12h13\"\/><\/symbol><symbol id=\"dgv-i-mountain\" viewBox=\"0 0 24 24\"><path d=\"M2.5 20 9 9.5l3.5 5.5 2.5-3.5 6.5 8.5z\"\/><circle cx=\"17\" cy=\"6\" r=\"2\"\/><\/symbol><symbol id=\"dgv-i-palette\" viewBox=\"0 0 24 24\"><path d=\"M12 3a9 9 0 1 0 0 18c1.1 0 1.8-.9 1.8-1.9 0-.5-.2-.9-.5-1.3-.3-.3-.5-.8-.5-1.3 0-1 .8-1.8 1.8-1.8H17a4 4 0 0 0 4-4C21 6.6 17 3 12 3z\"\/><circle cx=\"7.5\" cy=\"11\" r=\"1.1\"\/><circle cx=\"10.5\" cy=\"7.4\" r=\"1.1\"\/><circle cx=\"15\" cy=\"7.8\" r=\"1.1\"\/><\/symbol><symbol id=\"dgv-i-paw\" viewBox=\"0 0 24 24\"><circle cx=\"7\" cy=\"10\" r=\"1.8\"\/><circle cx=\"10.5\" cy=\"6.5\" r=\"1.8\"\/><circle cx=\"14.5\" cy=\"6.5\" r=\"1.8\"\/><circle cx=\"18\" cy=\"10\" r=\"1.8\"\/><path d=\"M12.5 11.5c-2.5 0-5 3.5-5 5.5 0 1.5 1 2.5 2.5 2.5 1 0 1.6-.5 2.5-.5s1.5.5 2.5.5c1.5 0 2.5-1 2.5-2.5 0-2-2.5-5.5-5-5.5z\"\/><\/symbol><symbol id=\"dgv-i-pen\" viewBox=\"0 0 24 24\"><path d=\"M12.5 19.5 19 13l-2.5-2.5L10 17v2.5zM15 9l-2-5-8 3 3 8 5-2M5 7l4 4\"\/><\/symbol><symbol id=\"dgv-i-plus\" viewBox=\"0 0 24 24\"><path d=\"M12 5v14M5 12h14\"\/><\/symbol><symbol id=\"dgv-i-quote\" viewBox=\"0 0 24 24\"><path d=\"M10 7.5C6.8 8.6 5 10.9 5 14.3V18h5.2v-5.2H7.6c.1-1.7 1.1-2.9 3-3.6zM19 7.5c-3.2 1.1-5 3.4-5 6.8V18h5.2v-5.2h-2.6c.1-1.7 1.1-2.9 3-3.6z\"\/><\/symbol><symbol id=\"dgv-i-refresh\" viewBox=\"0 0 24 24\"><path d=\"M19.5 12a7.5 7.5 0 0 1-13 5.1M4.5 12a7.5 7.5 0 0 1 13-5.1\"\/><path d=\"M17.5 3.5v3.6h-3.6M6.5 20.5v-3.6h3.6\"\/><\/symbol><symbol id=\"dgv-i-ruler\" viewBox=\"0 0 24 24\"><rect x=\"2.5\" y=\"8\" width=\"19\" height=\"8\" rx=\"1.5\"\/><path d=\"M6.5 8v3M10 8v4.5M13.5 8v3M17 8v4.5\"\/><\/symbol><symbol id=\"dgv-i-scale\" viewBox=\"0 0 24 24\"><path d=\"M12 4v16M8 20h8M5 7h14M5 7l-2.5 6a2.5 2.5 0 0 0 5 0zM19 7l-2.5 6a2.5 2.5 0 0 0 5 0z\"\/><\/symbol><symbol id=\"dgv-i-shop\" viewBox=\"0 0 24 24\"><path d=\"M4 9h16l-1.4-4.5H5.4zM5 9v11h14V9M9.5 20v-5.5h5V20\"\/><\/symbol><symbol id=\"dgv-i-smile\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"8.5\"\/><path d=\"M8.5 14.2c.9 1.3 2.1 2 3.5 2s2.6-.7 3.5-2\"\/><circle cx=\"9.2\" cy=\"10\" r=\".9\"\/><circle cx=\"14.8\" cy=\"10\" r=\".9\"\/><\/symbol><symbol id=\"dgv-i-sparkles\" viewBox=\"0 0 24 24\"><path d=\"M11 3.5l1.7 4.6 4.6 1.7-4.6 1.7L11 16.1l-1.7-4.6L4.7 9.8l4.6-1.7z\"\/><path d=\"M18 14.5l.8 2.1 2.1.8-2.1.8-.8 2.1-.8-2.1-2.1-.8 2.1-.8z\"\/><\/symbol><symbol id=\"dgv-i-star\" viewBox=\"0 0 24 24\"><path d=\"M12 2.8l2.8 5.8 6.3.9-4.6 4.4 1.1 6.3L12 17.3l-5.6 2.9 1.1-6.3L2.9 9.5l6.3-.9z\"\/><\/symbol><symbol id=\"dgv-i-target\" viewBox=\"0 0 24 24\"><circle cx=\"12\" cy=\"12\" r=\"8.5\"\/><circle cx=\"12\" cy=\"12\" r=\"4.5\"\/><circle cx=\"12\" cy=\"12\" r=\".6\"\/><\/symbol><symbol id=\"dgv-i-video\" viewBox=\"0 0 24 24\"><rect x=\"3\" y=\"6\" width=\"13\" height=\"12\" rx=\"2.5\"\/><path d=\"m16 10 5-3v10l-5-3\"\/><\/symbol><symbol id=\"dgv-i-whatsapp\" viewBox=\"0 0 24 24\"><path d=\"M20 11.6A8.4 8.4 0 0 1 7.6 19L4 20l1-3.5A8.4 8.4 0 1 1 20 11.6z\"\/><path d=\"M9.3 8.4c.3-.4.7-.4 1-.4l.6 1.6c.1.2 0 .5-.1.6l-.5.6c.6 1.1 1.5 2 2.6 2.6l.6-.5c.2-.1.4-.2.6-.1l1.6.6c0 .4-.1.8-.4 1.1-.5.4-1.1.6-1.7.5-2.6-.5-4.6-2.5-5.1-5.1-.1-.6.1-1.1.5-1.5z\"\/><\/symbol><symbol id=\"dgv-i-wrench\" viewBox=\"0 0 24 24\"><path d=\"M14.5 5.5a4.5 4.5 0 0 0 5.6 5.6L12 19.2a2 2 0 0 1-2.8 0l-.4-.4a2 2 0 0 1 0-2.8l8.1-8.1\"\/><path d=\"M14.5 5.5 17 3l4 4-2.5 2.5\"\/><\/symbol><\/svg>\n<section class=\"dgv-sec dgt-hero\" aria-labelledby=\"dgt-h1\">\n<div class=\"dgv-fx\" aria-hidden=\"true\"><div class=\"dgv-beams dgv-beams--soft\"><\/div><\/div>\n<div class=\"dgv-wrap dgt-hero-in\" data-dgv-r>\n<p class=\"dgt-kicker\"><span class=\"dgv-live\" aria-hidden=\"true\"><\/span>Free tool by DigiAcci\u00f3n<\/p>\n<h1 class=\"dgt-h1\" id=\"dgt-h1\"><span class=\"dgv-grad\">Online Ruler in Inches: Actual Size on Your Screen<\/span><\/h1>\n<p class=\"dgv-intro dgt-intro\">A free tool by DigiAcci\u00f3n, a digital marketing agency in Andorra: an inch ruler with 1\/16 fractions and cm, a measuring marker, a Go to a length box and 12, 6, 4, 3, 2 and 1 inch rulers. Calibrate it once to measure at actual size.<\/p>\n<ul class=\"dgt-badges\" role=\"list\"><li><svg class=\"dgv-i\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-check\"><\/use><\/svg>Free<\/li><li><svg class=\"dgv-i\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-check\"><\/use><\/svg>No sign-up<\/li><li><svg class=\"dgv-i\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-check\"><\/use><\/svg>1\/16 inch fractions<\/li><\/ul>\n<\/div>\n<\/section>\n<section class=\"dgv-sec dgt-app-sec\" id=\"dgt-app\" aria-label=\"Tool\">\n<div class=\"dgv-wrap\">\n<div class=\"dgt-tool dgt-card dgt-ruler\" data-dgt-ruler data-unit=\"in\" data-ui=\"{&#34;copiado&#34;: &#34;Copied&#34;, &#34;f_simbolo&#34;: &#34;Symbol&#34;, &#34;calibrada&#34;: &#34;Ruler calibrated in this browser.&#34;, &#34;equiv&#34;: &#34;1 {u} = {px} px.&#34;, &#34;sin_calibrar&#34;: &#34;Not calibrated: the length is approximate. Press \\&#34;Calibrate\\&#34; to make it exact on your screen.&#34;, &#34;guardada&#34;: &#34;Calibration saved&#34;, &#34;aa_grande&#34;: &#34;AA large text&#34;, &#34;no_pasa&#34;: &#34;Fails&#34;, &#34;no_cabe&#34;: &#34;Up to {n} fits on your screen. Turn your phone sideways or use full screen.&#34;, &#34;pasa&#34;: &#34;Pass&#34;, &#34;jn_aprox&#34;: &#34;Spelled by sound: double-check it if it is for a tattoo or anything important.&#34;, &#34;jn_dic&#34;: &#34;Usual spelling in Japan.&#34;, &#34;regla_fija&#34;: &#34;Actual size {n} ruler&#34;}\">\n<div class=\"dgt-bar dgt-bar--r\">\n<div class=\"dgt-seg\" role=\"radiogroup\" aria-label=\"Unit\"><button type=\"button\" role=\"radio\" data-u=\"cm\" aria-checked=\"false\">Centimeters<\/button><button type=\"button\" role=\"radio\" data-u=\"in\" aria-checked=\"true\">Inches<\/button><\/div>\n<p class=\"dgt-read\" aria-live=\"polite\"><small>Length<\/small><output data-dgt-read>0<\/output><\/p>\n<label class=\"dgt-goto\"><span>Go to a length<\/span><span class=\"dgt-goto-in\"><input type=\"number\" min=\"0\" step=\"0.1\" inputmode=\"decimal\" placeholder=\"10\" data-dgt-goto><b data-dgt-gu>in<\/b><\/span><\/label>\n<span class=\"dgt-bar-b\"><button type=\"button\" class=\"dgt-btn dgt-btn--pri\" data-act=\"calibrar\"><svg class=\"dgv-i\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-target\"><\/use><\/svg>Calibrate<\/button><button type=\"button\" class=\"dgt-btn\" data-act=\"pantalla\" aria-pressed=\"false\"><svg class=\"dgv-i\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-layout\"><\/use><\/svg>Full screen<\/button><\/span>\n<\/div>\n<div class=\"dgt-ruler-box\" data-dgt-rbox><canvas class=\"dgt-ruler-c\" data-dgt-canvas role=\"img\" aria-label=\"Actual size ruler\"><\/canvas><button type=\"button\" class=\"dgt-mark\" data-dgt-mark aria-label=\"Measuring marker: drag it or use the arrow keys\" role=\"slider\" aria-valuemin=\"0\" aria-valuenow=\"0\"><i><\/i><\/button><\/div>\n<p class=\"dgt-cal-state\" data-dgt-state><\/p>\n<div class=\"dgt-cal dgt-panel\" data-dgt-cal hidden>\n<p class=\"dgt-panel-t\"><svg class=\"dgv-i\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-target\"><\/use><\/svg>Calibrate the ruler so it measures at actual size<\/p>\n<div class=\"dgt-cal-grid\">\n<div><p class=\"dgt-cal-h\">With a credit card<\/p><p class=\"dgt-note\">Hold a credit or debit card (85.60 x 53.98 mm, the standard size) against the screen and adjust the slider until the drawing has the same width.<\/p><div class=\"dgt-cardbox\"><div class=\"dgt-credit\" data-dgt-card><span><\/span><\/div><\/div><div class=\"dgt-cal-ctl\"><button type=\"button\" class=\"dgt-btn\" data-act=\"cal-menos\" aria-label=\"Smaller\"><svg class=\"dgv-i\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-minus\"><\/use><\/svg><\/button><input type=\"range\" min=\"2.4\" max=\"9\" step=\"0.005\" data-dgt-ppm aria-label=\"With a credit card\"><button type=\"button\" class=\"dgt-btn\" data-act=\"cal-mas\" aria-label=\"Larger\"><svg class=\"dgv-i\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-plus\"><\/use><\/svg><\/button><\/div><\/div>\n<div><p class=\"dgt-cal-h\">With your screen size<\/p><p class=\"dgt-note\">If you know your screen diagonal in inches, type it in.<\/p><label class=\"dgt-field\"><span>Diagonal in inches<\/span><input type=\"number\" min=\"3\" max=\"100\" step=\"0.1\" inputmode=\"decimal\" placeholder=\"15.6\" data-dgt-diag><\/label><button type=\"button\" class=\"dgt-btn\" data-act=\"cal-diag\">Apply<\/button><\/div>\n<\/div>\n<div class=\"dgt-cal-end\"><button type=\"button\" class=\"dgt-btn dgt-btn--pri\" data-act=\"cal-ok\"><svg class=\"dgv-i\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-check\"><\/use><\/svg>Save calibration<\/button><button type=\"button\" class=\"dgt-btn\" data-act=\"cal-reset\"><svg class=\"dgv-i\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-refresh\"><\/use><\/svg>Reset<\/button><\/div>\n<\/div>\n<div class=\"dgt-fixed\" data-dgt-fixed>\n<div class=\"dgt-grp-h\"><h2 class=\"dgt-gh dgv-grad\" id=\"dgt-fijas-h\">How Long Is an Inch? 12, 6, 4, 3, 2 and 1 Inch Rulers at Actual Size<\/h2><p class=\"dgt-gd\">Once your screen is calibrated, each ruler is exactly as long as its label, with 1\/16 inch marks and the length in centimeters in its title. Use them to see how long 1, 2 or 12 inches is at a glance, without moving the marker.<\/p><\/div>\n<div class=\"dgt-fr\" data-n=\"12\"><h3 class=\"dgt-fr-h\">12 Inch Ruler (1 Foot, 30.48 cm)<\/h3><div class=\"dgt-fr-w\"><canvas class=\"dgt-fr-c\" data-dgt-fc data-n=\"12\" role=\"img\" aria-label=\"Actual size 12 in ruler\"><\/canvas><\/div><\/div>\n<div class=\"dgt-fr\" data-n=\"6\"><h3 class=\"dgt-fr-h\">6 Inch Ruler: How Long Is 6 Inches? 15.24 cm<\/h3><div class=\"dgt-fr-w\"><canvas class=\"dgt-fr-c\" data-dgt-fc data-n=\"6\" role=\"img\" aria-label=\"Actual size 6 in ruler\"><\/canvas><\/div><\/div>\n<div class=\"dgt-fr\" data-n=\"4\"><h3 class=\"dgt-fr-h\">How Long Is 4 Inches? 10.16 cm<\/h3><div class=\"dgt-fr-w\"><canvas class=\"dgt-fr-c\" data-dgt-fc data-n=\"4\" role=\"img\" aria-label=\"Actual size 4 in ruler\"><\/canvas><\/div><\/div>\n<div class=\"dgt-fr\" data-n=\"3\"><h3 class=\"dgt-fr-h\">How Long Is 3 Inches? 7.62 cm<\/h3><div class=\"dgt-fr-w\"><canvas class=\"dgt-fr-c\" data-dgt-fc data-n=\"3\" role=\"img\" aria-label=\"Actual size 3 in ruler\"><\/canvas><\/div><\/div>\n<div class=\"dgt-fr\" data-n=\"2\"><h3 class=\"dgt-fr-h\">How Long Is 2 Inches? 5.08 cm<\/h3><div class=\"dgt-fr-w\"><canvas class=\"dgt-fr-c\" data-dgt-fc data-n=\"2\" role=\"img\" aria-label=\"Actual size 2 in ruler\"><\/canvas><\/div><\/div>\n<div class=\"dgt-fr\" data-n=\"1\"><h3 class=\"dgt-fr-h\">1 Inch Ruler: 1 Inch at Actual Size (2.54 cm)<\/h3><div class=\"dgt-fr-w\"><canvas class=\"dgt-fr-c\" data-dgt-fc data-n=\"1\" role=\"img\" aria-label=\"Actual size 1 in ruler\"><\/canvas><\/div><\/div>\n<p class=\"dgt-note dgt-fr-note\">Swipe to see the whole ruler<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/section>\n<section class=\"dgv-sec dgt-guide\">\n<div class=\"dgv-wrap\">\n<div class=\"dgv-head dgv-head--c\" data-dgv-r><h2 class=\"dgv-h2 dgv-grad\">How to Use This Inch Ruler at Actual Size<\/h2><p class=\"dgv-intro\">Until you calibrate it, the ruler uses the CSS standard of 96 pixels per inch, so the reading is only approximate. One minute of calibration makes it match a physical ruler.<\/p><\/div><div class=\"dgt-cards dgt-cards--4\"><article class=\"dgv-card dgt-gcard\" data-dgv-r style=\"--dgv-d:0.00s\"><span class=\"dgt-num\" aria-hidden=\"true\">01<\/span><p class=\"dgv-h3\">Calibrate With a Credit Card<\/p><p class=\"dgv-txt\">Press Calibrate, hold a credit card against the drawing and move the slider until both widths match. Every card is 85.60 x 53.98 mm (ISO\/IEC 7810 ID-1). Then press Save calibration.<\/p><\/article><article class=\"dgv-card dgt-gcard\" data-dgv-r style=\"--dgv-d:0.08s\"><span class=\"dgt-num\" aria-hidden=\"true\">02<\/span><h3 class=\"dgv-h3\">How to Measure Screen Size<\/h3><p class=\"dgv-txt\">Measure the diagonal from corner to corner of the lit area, without the bezel. Enter that number in Calibrate (13.3, 15.6, 6.1...) and press Apply. If you measured in centimeters, divide by 2.54 first.<\/p><\/article><article class=\"dgv-card dgt-gcard\" data-dgv-r style=\"--dgv-d:0.16s\"><span class=\"dgt-num\" aria-hidden=\"true\">03<\/span><p class=\"dgv-h3\">Measure With the Marker or Go to a Length<\/p><p class=\"dgv-txt\">Line up the object with 0 and drag the marker to its end, or tap the ruler: you get the length as a fraction (2 3\/8 in) and as a decimal. Type a number in Go to a length, like 2 or 2.5, and the marker moves to that mark. On a keyboard, arrow keys move 1\/16 and Shift + arrow moves one inch.<\/p><\/article><article class=\"dgv-card dgt-gcard\" data-dgv-r style=\"--dgv-d:0.00s\"><span class=\"dgt-num\" aria-hidden=\"true\">04<\/span><p class=\"dgv-h3\">Full Screen and Fixed Rulers<\/p><p class=\"dgv-txt\">Full screen uses the whole width (on a phone, turn it sideways; Esc takes you back to the page). Below the main ruler there are 12, 6, 4, 3, 2 and 1 inch rulers at actual size; on a phone, swipe the long ones sideways. Your calibration is saved in your browser.<\/p><\/article><\/div>\n<\/div>\n<\/section>\n<section class=\"dgv-sec dgt-guide\">\n<div class=\"dgv-wrap\">\n<div class=\"dgv-head dgv-head--c\" data-dgv-r><h2 class=\"dgv-h2 dgv-grad\">Inch Fraction Chart: Decimals and Millimeters<\/h2><p class=\"dgv-intro\">All 16 divisions of the ruler with their decimal value and their exact equivalent in millimeters (1 inch = 25.4 mm).<\/p><\/div><div class=\"dgt-table-w\" data-dgv-r><table class=\"dgt-table\"><thead><tr><th scope=\"col\">Inch fraction<\/th><th scope=\"col\">Decimal inches<\/th><th scope=\"col\">Millimeters<\/th><\/tr><\/thead><tbody><tr><th scope=\"row\">1\/16 in<\/th><td>0.0625<\/td><td>1.5875 mm<\/td><\/tr><tr><th scope=\"row\">1\/8 in<\/th><td>0.125<\/td><td>3.175 mm<\/td><\/tr><tr><th scope=\"row\">3\/16 in<\/th><td>0.1875<\/td><td>4.7625 mm<\/td><\/tr><tr><th scope=\"row\">1\/4 in<\/th><td>0.25<\/td><td>6.35 mm<\/td><\/tr><tr><th scope=\"row\">5\/16 in<\/th><td>0.3125<\/td><td>7.9375 mm<\/td><\/tr><tr><th scope=\"row\">3\/8 in<\/th><td>0.375<\/td><td>9.525 mm<\/td><\/tr><tr><th scope=\"row\">7\/16 in<\/th><td>0.4375<\/td><td>11.1125 mm<\/td><\/tr><tr><th scope=\"row\">1\/2 in<\/th><td>0.5<\/td><td>12.7 mm<\/td><\/tr><tr><th scope=\"row\">9\/16 in<\/th><td>0.5625<\/td><td>14.2875 mm<\/td><\/tr><tr><th scope=\"row\">5\/8 in<\/th><td>0.625<\/td><td>15.875 mm<\/td><\/tr><tr><th scope=\"row\">11\/16 in<\/th><td>0.6875<\/td><td>17.4625 mm<\/td><\/tr><tr><th scope=\"row\">3\/4 in<\/th><td>0.75<\/td><td>19.05 mm<\/td><\/tr><tr><th scope=\"row\">13\/16 in<\/th><td>0.8125<\/td><td>20.6375 mm<\/td><\/tr><tr><th scope=\"row\">7\/8 in<\/th><td>0.875<\/td><td>22.225 mm<\/td><\/tr><tr><th scope=\"row\">15\/16 in<\/th><td>0.9375<\/td><td>23.8125 mm<\/td><\/tr><tr><th scope=\"row\">1 in<\/th><td>1<\/td><td>25.4 mm<\/td><\/tr><\/tbody><\/table><\/div>\n<\/div>\n<\/section>\n<section class=\"dgv-sec dgv-faq-sec\" id=\"dgv-faq\">\n<div class=\"dgv-fx\" aria-hidden=\"true\"><div class=\"dgv-halo dgv-halo--t\"><\/div><\/div>\n<div class=\"dgv-wrap dgv-faq-wrap\">\n<div class=\"dgv-head dgv-head--c\" data-dgv-r><h2 class=\"dgv-h2 dgv-grad\">Inch Ruler FAQ: Fractions, Sizes and Accuracy<\/h2><\/div>\n<div class=\"dgv-faq dgv-faq--2\"><div class=\"dgv-faq-col\">\n<div class=\"dgv-faq-item is-open\"><h3 class=\"dgv-faq-q\"><button class=\"dgv-faq-btn\" type=\"button\" id=\"dgv-faq-q1\" aria-expanded=\"true\" aria-controls=\"dgv-faq-a1\"><span>How big is an inch?<\/span><span class=\"dgv-pm\" aria-hidden=\"true\"><\/span><\/button><\/h3><div class=\"dgv-faq-a\" id=\"dgv-faq-a1\" role=\"region\" aria-labelledby=\"dgv-faq-q1\"><div><p>An inch is exactly 2.54 cm, or 25.4 mm. To see one at actual size, calibrate your screen and look at the 1 inch ruler below the main one. Twelve inches make a foot, which is 30.48 cm.<\/p><\/div><\/div><\/div>\n<div class=\"dgv-faq-item\"><h3 class=\"dgv-faq-q\"><button class=\"dgv-faq-btn\" type=\"button\" id=\"dgv-faq-q2\" aria-expanded=\"false\" aria-controls=\"dgv-faq-a2\"><span>What does 2 inches look like?<\/span><span class=\"dgv-pm\" aria-hidden=\"true\"><\/span><\/button><\/h3><div class=\"dgv-faq-a\" id=\"dgv-faq-a2\" role=\"region\" aria-labelledby=\"dgv-faq-q2\"><div><p>Two inches is 5.08 cm, slightly shorter than the short side of a credit card (2 1\/8 inches). To see it at actual size, calibrate your screen and look at the 2 inch ruler on this page, or type 2 in Go to a length and the marker moves to the 2 inch mark.<\/p><\/div><\/div><\/div>\n<div class=\"dgv-faq-item\"><h3 class=\"dgv-faq-q\"><button class=\"dgv-faq-btn\" type=\"button\" id=\"dgv-faq-q3\" aria-expanded=\"false\" aria-controls=\"dgv-faq-a3\"><span>How long is 5 inches?<\/span><span class=\"dgv-pm\" aria-hidden=\"true\"><\/span><\/button><\/h3><div class=\"dgv-faq-a\" id=\"dgv-faq-a3\" role=\"region\" aria-labelledby=\"dgv-faq-q3\"><div><p>Five inches is 12.7 cm. There is no fixed 5 inch ruler on this page, but you can type 5 in Go to a length: the marker moves to the 5 inch mark and the bottom scale shows 12.7 cm. It fits on a laptop screen; on a phone, turn it sideways, and if it still does not fit, a message tells you how much does.<\/p><\/div><\/div><\/div>\n<div class=\"dgv-faq-item\"><h3 class=\"dgv-faq-q\"><button class=\"dgv-faq-btn\" type=\"button\" id=\"dgv-faq-q4\" aria-expanded=\"false\" aria-controls=\"dgv-faq-a4\"><span>How many inches is a ruler?<\/span><span class=\"dgv-pm\" aria-hidden=\"true\"><\/span><\/button><\/h3><div class=\"dgv-faq-a\" id=\"dgv-faq-a4\" role=\"region\" aria-labelledby=\"dgv-faq-q4\"><div><p>A standard US ruler is 12 inches, one foot (30.48 cm), and this page has one at actual size. A 30 cm metric ruler is 11.81 inches, and a 6 inch ruler is 15.24 cm.<\/p><\/div><\/div><\/div>\n<div class=\"dgv-faq-item\"><h3 class=\"dgv-faq-q\"><button class=\"dgv-faq-btn\" type=\"button\" id=\"dgv-faq-q5\" aria-expanded=\"false\" aria-controls=\"dgv-faq-a5\"><span>How do you read inches on a ruler?<\/span><span class=\"dgv-pm\" aria-hidden=\"true\"><\/span><\/button><\/h3><div class=\"dgv-faq-a\" id=\"dgv-faq-a5\" role=\"region\" aria-labelledby=\"dgv-faq-q5\"><div><p>Line up the object with 0, read the last whole number it passes and count the marks left until its end. On a ruler with 16 divisions, each mark is 1\/16 inch; then reduce the fraction (4\/16 is 1\/4). On this online ruler, the marker does the counting for you.<\/p><\/div><\/div><\/div>\n<div class=\"dgv-faq-item\"><h3 class=\"dgv-faq-q\"><button class=\"dgv-faq-btn\" type=\"button\" id=\"dgv-faq-q6\" aria-expanded=\"false\" aria-controls=\"dgv-faq-a6\"><span>What is 3\/8 on a ruler?<\/span><span class=\"dgv-pm\" aria-hidden=\"true\"><\/span><\/button><\/h3><div class=\"dgv-faq-a\" id=\"dgv-faq-a6\" role=\"region\" aria-labelledby=\"dgv-faq-q6\"><div><p>Three eighths of an inch is 0.375 in, or 9.525 mm. On a ruler marked in sixteenths it is the sixth mark after a whole number, halfway between 1\/4 and 1\/2.<\/p><\/div><\/div><\/div><\/div><div class=\"dgv-faq-col\">\n<div class=\"dgv-faq-item\"><h3 class=\"dgv-faq-q\"><button class=\"dgv-faq-btn\" type=\"button\" id=\"dgv-faq-q7\" aria-expanded=\"false\" aria-controls=\"dgv-faq-a7\"><span>What are the fractions of an inch?<\/span><span class=\"dgv-pm\" aria-hidden=\"true\"><\/span><\/button><\/h3><div class=\"dgv-faq-a\" id=\"dgv-faq-a7\" role=\"region\" aria-labelledby=\"dgv-faq-q7\"><div><p>Inches are split in halves: 1\/2, 1\/4, 1\/8 and 1\/16 on everyday rulers and tape measures, and 1\/32 or 1\/64 on precision tools. Each fraction is half the size of the previous one, so 1\/16 inch is 1.5875 mm.<\/p><\/div><\/div><\/div>\n<div class=\"dgv-faq-item\"><h3 class=\"dgv-faq-q\"><button class=\"dgv-faq-btn\" type=\"button\" id=\"dgv-faq-q8\" aria-expanded=\"false\" aria-controls=\"dgv-faq-a8\"><span>Is there a virtual ruler?<\/span><span class=\"dgv-pm\" aria-hidden=\"true\"><\/span><\/button><\/h3><div class=\"dgv-faq-a\" id=\"dgv-faq-a8\" role=\"region\" aria-labelledby=\"dgv-faq-q8\"><div><p>Yes. This page is a free virtual ruler that works in any browser, with inches on top and centimeters below. Calibrate it once with a credit card or your screen size and it measures at actual size.<\/p><\/div><\/div><\/div>\n<div class=\"dgv-faq-item\"><h3 class=\"dgv-faq-q\"><button class=\"dgv-faq-btn\" type=\"button\" id=\"dgv-faq-q9\" aria-expanded=\"false\" aria-controls=\"dgv-faq-a9\"><span>Can I use a ruler on my phone?<\/span><span class=\"dgv-pm\" aria-hidden=\"true\"><\/span><\/button><\/h3><div class=\"dgv-faq-a\" id=\"dgv-faq-a9\" role=\"region\" aria-labelledby=\"dgv-faq-q9\"><div><p>Yes. Open this page in your phone browser, calibrate it with a credit card and turn the phone sideways for more length. In portrait mode only a few inches fit: the fixed rulers that do not fit scroll sideways, and longer items are easier to measure in sections or on a computer.<\/p><\/div><\/div><\/div>\n<div class=\"dgv-faq-item\"><h3 class=\"dgv-faq-q\"><button class=\"dgv-faq-btn\" type=\"button\" id=\"dgv-faq-q10\" aria-expanded=\"false\" aria-controls=\"dgv-faq-a10\"><span>Is an online ruler accurate?<\/span><span class=\"dgv-pm\" aria-hidden=\"true\"><\/span><\/button><\/h3><div class=\"dgv-faq-a\" id=\"dgv-faq-a10\" role=\"region\" aria-labelledby=\"dgv-faq-q10\"><div><p>Only once you calibrate it. Uncalibrated, it depends on the pixel size of each screen and can be far off. Calibrated with a carefully matched credit card, the error stays under a millimeter over a few inches; for tight shop tolerances, use a caliper.<\/p><\/div><\/div><\/div>\n<div class=\"dgv-faq-item\"><h3 class=\"dgv-faq-q\"><button class=\"dgv-faq-btn\" type=\"button\" id=\"dgv-faq-q11\" aria-expanded=\"false\" aria-controls=\"dgv-faq-a11\"><span>How do I change the ruler to inches in Word?<\/span><span class=\"dgv-pm\" aria-hidden=\"true\"><\/span><\/button><\/h3><div class=\"dgv-faq-a\" id=\"dgv-faq-a11\" role=\"region\" aria-labelledby=\"dgv-faq-q11\"><div><p>In Word for Windows, open File, go to Options and then Advanced. Under Display, choose Inches in \"Show measurements in units of\" and select OK: the ruler and margins switch to inches.<\/p><\/div><\/div><\/div>\n<div class=\"dgv-faq-item\"><h3 class=\"dgv-faq-q\"><button class=\"dgv-faq-btn\" type=\"button\" id=\"dgv-faq-q12\" aria-expanded=\"false\" aria-controls=\"dgv-faq-a12\"><span>How do I find 7\/16 on a tape measure?<\/span><span class=\"dgv-pm\" aria-hidden=\"true\"><\/span><\/button><\/h3><div class=\"dgv-faq-a\" id=\"dgv-faq-a12\" role=\"region\" aria-labelledby=\"dgv-faq-q12\"><div><p>Count seven sixteenth marks after the whole number: 7\/16 sits one mark before the half inch (8\/16). It equals 0.4375 in, or 11.1125 mm.<\/p><\/div><\/div><\/div><\/div>\n<\/div>\n<\/div>\n<\/section>\n<section class=\"dgv-sec dgv-more-sec\" id=\"dgv-leer-mas\">\n<div class=\"dgv-wrap dgv-more-grid\">\n<div class=\"dgv-card dgv-more-card\" data-dgv-r>\n<p class=\"dgv-more-t dgv-grad\">Inch Ruler Guide<\/p><p class=\"dgv-more-s\">How to calibrate it, read the fractions, see any length at actual size and know how far you can trust the reading<\/p>\n<div class=\"dgv-more\" id=\"dgv-more-body\" data-dgv-more><div class=\"dgv-prose\"><h2>Online Ruler in Inches, Free and at Actual Size<\/h2><p>This online ruler in inches turns your computer, tablet or phone screen into a real ruler. The top scale shows <strong>inches divided into sixteenths<\/strong>, just like the rulers and tape measures used in the US; the bottom scale shows <strong>centimeters and millimeters<\/strong> for comparison. A marker you can drag gives you the length as an inch fraction (for example, 2 3\/8 in) and as a decimal (2.38 in), so you never have to count tick marks. To see a specific length, type it in <strong>Go to a length<\/strong> and the marker moves there; below the main ruler there are also fixed 12, 6, 4, 3, 2 and 1 inch rulers at actual size.<\/p><p>Use it for anything that comes in inches: sewing patterns and quilting rulers, screws and pipes, frames and photos (a 4 x 6 print is 10.16 x 15.24 cm), woodworking parts, items bought from US stores or the diagonal of a screen. It also helps you learn how to read a ruler in inches, because you see the mark, the fraction and the decimal value at the same time.<\/p><p>Before you measure anything that matters, take a minute to calibrate it. Without calibration, the ruler uses a standard conversion and may come out longer or shorter than a physical ruler; once calibrated with a credit card, it measures at actual size on your screen.<\/p><h2>How to Calibrate an Online Ruler to Actual Size<\/h2><p>Every screen has a different pixel size, and your browser has no way of knowing how many millimeters yours measures. That is why the ruler offers two ways to calibrate it, both under the <strong>Calibrate<\/strong> button.<\/p><ul><li><strong>With a credit card.<\/strong> Credit and debit cards follow the ISO\/IEC 7810 ID-1 standard: 85.60 x 53.98 mm, about 3.37 x 2.125 inches. Hold the card against the drawing on screen without pressing, and move the slider (or the plus and minus buttons) until the edge of the drawing lines up with the edge of the card. This is the most reliable method.<\/li><li><strong>With your screen diagonal.<\/strong> If you know your screen size in inches (13.3, 14, 15.6, 27...), type it in and press Apply. The tool works out how many pixels fit in an inch. It is fast, but it is only as exact as the number you enter; if in doubt, use the card.<\/li><\/ul><p>When the ruler matches, press <strong>Save calibration<\/strong>. It stays saved in your browser, for the centimeter ruler too, as long as you do not clear site data or use a private window. Calibrate with your browser zoom at 100% and leave it there: if you change the zoom, the scale is no longer valid and you need to calibrate again. <strong>Reset<\/strong> goes back to the default value.<\/p><h3>Pixels Per Inch: Why Every Screen Measures Differently<\/h3><p>Screen density is measured in pixels per inch (PPI). A 15.6-inch laptop with a 1920 x 1080 display has about 141 pixels per inch, and a modern phone can go past 400. On top of that, the operating system scales the image: with Windows display scaling at 125%, that laptop shows about 113 web page pixels per physical inch. Browsers, however, always count 96 pixels per inch, as explained in <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/CSS\/Reference\/Values\/length\" target=\"_blank\" rel=\"noopener\">the CSS length units reference on MDN<\/a>. The result: on that laptop, an uncalibrated inch is only 0.85 real inches long.<\/p><p>It is the same idea we work with in <a href=\"https:\/\/www.digiaccion.com\/en\/graphic-design-agency-andorra\/\">graphic design<\/a> when we prepare an image for print at 300 DPI: what counts is not the number of pixels, but how many fit into each inch.<\/p><h2>How to Read a Ruler in Inches<\/h2><p>You read an inch ruler from big to small: first the whole number, then the fraction. On the top scale, each number marks a full inch. Between two numbers there are 15 tick marks that split the inch into 16 equal parts, and their length tells you which fraction each one is:<\/p><ul><li><strong>The longest mark<\/strong> between two numbers is the half inch (1\/2).<\/li><li><strong>The next two<\/strong> mark the quarters (1\/4 and 3\/4).<\/li><li><strong>The four medium marks<\/strong> are the eighths (1\/8, 3\/8, 5\/8 and 7\/8).<\/li><li><strong>The eight shortest<\/strong> are the sixteenths (1\/16, 3\/16, 5\/16...).<\/li><\/ul><p>To measure, line up the edge of the object with 0 and see where it ends. If it stops at the third mark after 2, that is 3\/16: 2 3\/16 inches. If it stops at the sixth, that is 6\/16, which reduces to 3\/8: 2 3\/8 inches. Always reduce the fraction, so 8\/16 becomes 1\/2 and 12\/16 becomes 3\/4. The marker in this tool does the math for you and rounds to the nearest sixteenth.<\/p><h3>Inch Fractions on a Ruler: 1\/2, 1\/4, 1\/8 and 1\/16<\/h3><p>Inch fractions always split in half: halves, quarters, eighths, sixteenths and, on precision tools, thirty-seconds and sixty-fourths. That is why inch measurements use denominators of 2, 4, 8, 16, 32 or 64, never thirds or fifths. Some engineering rulers divide the inch into tenths or hundredths instead; for those, the tool also shows the decimal value.<\/p><p>If you need a fraction in millimeters, the chart on this page gives the exact value for all 16 divisions: 1\/16 is 1.5875 mm, 1\/8 is 3.175 mm, 1\/4 is 6.35 mm and 1\/2 is 12.7 mm.<\/p><h2>How Big Is an Inch in Centimeters and Millimeters?<\/h2><p>An inch is exactly 2.54 centimeters, or 25.4 millimeters. That is not a rounded figure: under a 1959 agreement, the United States, the United Kingdom and other Commonwealth countries adopted the same international yard of 0.9144 meters, which makes the inch exactly 25.4 mm, as <a href=\"https:\/\/www.nist.gov\/pml\/owm\/si-units-length\" target=\"_blank\" rel=\"noopener\">NIST explains in its guide to length units<\/a>. To see one at actual size, calibrate your screen and look at the 1 inch ruler on this page.<\/p><p>The conversions you will use most: 12 inches make a foot (30.48 cm) and 36 inches make a yard (91.44 cm). To convert inches to centimeters, multiply by 2.54; to convert centimeters to inches, divide by 2.54. So 10 inches is 25.4 cm and 10 cm is 3.94 inches.<\/p><p>The standard abbreviation for inch is in: 12 in. Drawings, charts and spec sheets also use the double prime (\u2033), which most people type as a straight double quote: 12\u2033 or 12\". Feet use a single prime (\u2032), so 5\u2032 10\u2033 means 5 feet 10 inches. Fractions go after the whole number with a space: 1 1\/4\u2033. If you need to copy the prime or double prime, you will find them in our <a href=\"https:\/\/www.digiaccion.com\/en\/quotation-marks-symbols\/\">quotation marks and writing symbols<\/a> tool.<\/p><h3>How Many Inches Is a Ruler?<\/h3><p>A standard US ruler is 12 inches long, one foot, which is 30.48 cm. A 30 cm metric ruler is 11.81 inches, just under 11 13\/16. If your ruler has both scales, take a look: the 30 cm mark sits slightly before the 12 inch mark.<\/p><h3>How Many Inches Is a Foot?<\/h3><p>A foot is 12 inches, exactly 30.48 cm, and three feet make a yard (91.44 cm). It is the length of a standard US ruler and of the first fixed ruler on this page: once your screen is calibrated, you see a foot at actual size, and if your screen is narrower, the ruler scrolls sideways so you can see all of it. Heights mix both units: 5\u2032 10\u2033 is 5 feet 10 inches, or 70 inches in total, which is 1.78 m.<\/p><h2>How Long Is 5 Inches? See Any Length at Actual Size<\/h2><p>Knowing that an inch is 2.54 cm does not always help you picture a length. That is what the <strong>Go to a length<\/strong> box next to the ruler reading is for: type a number, such as 2, 5 or 10, and the red marker moves to that length on the main ruler. With inches selected, the bottom scale shows the same point in centimeters, so you can see that 5 inches reaches 12.7 cm. Switch to Centimeters and the number you type is read in cm.<\/p><p>Decimals work too: 2.5 is two and a half inches and 0.25 is a quarter inch. The reading shows the reduced fraction (2 1\/2 in) and the decimal. If the length does not fit on your screen, the marker stops at the edge and a message tells you how much fits: on a laptop the main ruler reaches about 12 inches, while a phone held upright shows only a few. Turn your phone sideways or use full screen to get more length.<\/p><p>Below the main ruler there are six fixed rulers of 12, 6, 4, 3, 2 and 1 inches, marked in sixteenths and using the same calibration as the main one (the 85.60 mm card or your screen diagonal). They let you hold an object against an exact length without moving anything. On a phone, swipe sideways to see the ones that do not fit.<\/p><h3>How Long Is Half an Inch?<\/h3><p>Half an inch is 12.7 mm, or 1.27 cm. On a ruler it is the longest mark between two numbers, eight sixteenths after the whole inch. Type 0.5 in Go to a length to see it at actual size. Smaller fractions shrink fast: 1\/4 inch is 6.35 mm and 1\/8 inch is 3.175 mm.<\/p><h3>Inches to cm Chart: 1 to 12 Inches<\/h3><p>The exact values for whole inches (1 inch = 2.54 cm):<\/p><ul><li>1 inch: 2.54 cm<\/li><li>2 inches: 5.08 cm<\/li><li>3 inches: 7.62 cm<\/li><li>4 inches: 10.16 cm<\/li><li>5 inches: 12.7 cm<\/li><li>6 inches: 15.24 cm<\/li><li>7 inches: 17.78 cm<\/li><li>8 inches: 20.32 cm<\/li><li>9 inches: 22.86 cm<\/li><li>10 inches: 25.4 cm<\/li><li>11 inches: 27.94 cm<\/li><li>12 inches: 30.48 cm<\/li><\/ul><p>For any other length, multiply by 2.54: 1 1\/2 inches is 3.81 cm and 15 inches is 38.1 cm.<\/p><h2>Ruler With Inches and cm on One Screen<\/h2><p>The tool draws both scales on the same ruler: inches on top and centimeters below. You can see at a glance that 1 inch is 2.54 cm, that 4 inches is just over 10.1 cm and that 10 cm falls just short of 4 inches. It works like a dual-scale ruler, with an exact reading on screen.<\/p><p>The unit switch changes which scale is the main one. Choose Centimeters and the marker reads in cm and mm, with the metric scale on top; Go to a length then reads centimeters too. If you mostly work in metric, there is a dedicated page with our <a href=\"https:\/\/www.digiaccion.com\/en\/online-ruler-cm-mm\/\">online ruler in cm and mm<\/a>, which uses the calibration you have already saved.<\/p><p>One tip when converting: do not round too early. 3\/8 inch is 9.525 mm; round it to 9.5 and repeat it across ten parts, and you are already a quarter of a millimeter off.<\/p><h2>Is an Online Ruler Accurate?<\/h2><p>An online ruler is only accurate once it is calibrated. Without calibration, it assumes the standard 96 pixels per inch, which rarely matches a physical inch: on the laptop in the example above the error is about 15%, and on a phone it is usually larger. Use it uncalibrated only for a rough idea.<\/p><p>Once calibrated with a card, accuracy depends on how carefully you match the width. If you are off by half a millimeter across the 85.60 mm of the card, the error is about 0.6%: less than 1 mm over 6 inches. That is plenty for sewing, crafts, checking a screw or the size of a photo.<\/p><p>It has limits worth knowing:<\/p><ul><li>The fraction is rounded to the nearest sixteenth (1.59 mm); the decimal goes down to a hundredth of an inch.<\/li><li>Look at the screen straight on: at an angle, the thickness of the glass shifts the mark (parallax error).<\/li><li>Measure flat objects resting on the screen, without pressing. On a curved monitor the reading is not reliable.<\/li><li>For shop work with tight tolerances, use a caliper.<\/li><\/ul><h2>How to Measure Inches Without a Ruler<\/h2><p>If you do not have a ruler at hand, you can measure with objects of a known, standard size:<\/p><ul><li><strong>A credit card:<\/strong> 3.37 inches wide and 2.125 inches tall (85.60 x 53.98 mm).<\/li><li><strong>A US quarter:<\/strong> 0.955 inches across (24.26 mm). In Europe, a 2 euro coin is 25.75 mm, almost exactly one inch (1.01 in).<\/li><li><strong>A sheet of paper:<\/strong> US Letter is exactly 8.5 x 11 inches; A4 is 8.27 x 11.69 inches (210 x 297 mm).<\/li><li><strong>Your calibrated screen:<\/strong> calibrate this ruler with a card and you have an inch ruler on your phone for anything that fits on the screen.<\/li><\/ul><p>Many people use the width of their thumb as a quick reference, since on many adults it is close to an inch, but it varies a lot from person to person: it is good for estimating, not for measuring.<\/p><h2>A Free Tool by DigiAcci\u00f3n, a Digital Marketing Agency in Andorra<\/h2><p>This inch ruler is a free tool by DigiAcci\u00f3n, a <a href=\"https:\/\/www.digiaccion.com\/en\/\">digital marketing agency in Andorra<\/a> based in La Massana. There is nothing to sign up for or install: it runs in the browser on your computer, tablet or phone, and your calibration stays on your device.<\/p><p>At DigiAcci\u00f3n we do <a href=\"https:\/\/www.digiaccion.com\/en\/web-design-agency-in-andorra\/\">web design<\/a>, SEO, GEO or AI search optimization, Google Ads and Meta Ads campaigns, video, graphic design and online stores, and we work with companies in Andorra, Spain and other countries. Tools like this one come from the same work we do for our clients: fast, clear pages built so visitors can get done what they came to do.<\/p><\/div><\/div>\n<button class=\"dgv-more-btn\" type=\"button\" aria-expanded=\"false\" aria-controls=\"dgv-more-body\" data-more=\"Read the full guide\" data-less=\"Close the guide\"><span class=\"dgv-more-lab\">Read the full guide<\/span><svg class=\"dgv-i\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-chev\"><\/use><\/svg><\/button>\n<\/div>\n<aside class=\"dgv-more-aside\" aria-label=\"Who made this tool\"><div class=\"dgv-card dgv-glow dgv-more-cta dgt-author\" data-dgv-r style=\"--dgv-d:.1s\"><span class=\"dgv-edge\" aria-hidden=\"true\"><\/span><span class=\"dgt-author-logo\" aria-hidden=\"true\"><svg viewBox=\"0 0 164 35\" role=\"img\" aria-label=\"DigiAcci\u00f3n\"><path class=\"g\" d=\"M133.8 8.8L133.8 8.8C133.8 8.7 133.8 8.7 133.9 8.7C136.4 8.4 138.9 8 141.5 7.6C141.9 7.5 142.2 7.5 142.5 7.5C142.9 7.5 143.2 7.5 143.6 7.5L143.6 7.5L143.6 8.8L143.6 8.8L133.8 8.8C133.7 8.8 133.7 8.8 133.8 8.8L133.8 8.8Z\"\/><path class=\"g\" d=\"M149.4 18.9C148.8 21.8 146.8 24 143.8 24.4C143.6 24.4 143.2 24.4 142.6 24.4C138.9 24.4 135.3 24.4 131.6 24.4C131 24.4 130.6 24.4 130.4 24.4C122.5 23.6 122.5 10.6 130.4 9.9C130.6 9.8 131 9.8 131.6 9.8C135.5 9.8 139.4 9.8 143.3 9.8C143.8 9.8 144.4 9.9 145 10.1C148.7 11.3 150.1 15.3 149.4 18.9ZM128.8 11.4C125.9 12.6 125.4 16.1 125.9 18.8C126.2 20.8 127.3 22.4 129.3 23C129.8 23.1 130.4 23.2 130.9 23.2C132.7 23.2 136.7 23.2 142.9 23.2C143.5 23.2 144 23.2 144.6 23.1C148.1 22.2 148.7 18.2 148.2 15.2C147.8 13.3 146.8 11.8 144.9 11.3C144.3 11.1 143.7 11 143.2 11C139.3 11 135.4 11 131.4 11C130.5 11 129.6 11 128.8 11.4Z\"\/><path class=\"g\" d=\"M152.6 13.3L152.6 13.3C153.3 11.4 154.8 10.2 156.7 9.9C158.8 9.6 160.9 10.1 162.1 12C162.8 13.2 163 14.6 163 15.9C163 18.6 163 21.4 163 24.1L163 24.1C163 24.1 163 24.1 162.9 24.1L161.7 24.1L161.7 24.1L161.7 24.1C161.7 21.4 161.7 18.6 161.7 15.9C161.7 13.8 161.2 11.5 158.7 11.1C157.8 10.9 157 10.9 156.1 11.1C153.7 11.7 152.7 13.7 152.7 16C152.7 18.7 152.7 21.4 152.7 24.1L152.7 24.1L151.5 24.1C151.5 24.1 151.4 24.1 151.4 24.1L151.4 24.1L151.4 10.1L151.4 10.1C151.4 10.1 151.4 10.1 151.5 10.1L152.5 10.1L152.5 10.1L152.5 10.1L152.5 13.3L152.5 13.3L152.5 13.3L152.5 13.3L152.6 13.3Z\"\/><path class=\"b\" d=\"M37 5L37 5C39.2 5 41.4 5 43.5 5C44.8 5 46 5.2 47.1 5.7C49.9 6.8 51.6 9.2 52.2 12.1C52.6 14.6 52.5 17.3 51.4 19.5C50 22.3 47.3 23.8 44.2 24.1C44 24.1 43.5 24.1 43 24.1C41 24.1 39 24.1 37 24.1L37 24.1L37 24.1V5ZM46.9 6.8C45.7 6.3 44.4 6.2 43.1 6.2C41.5 6.2 39.9 6.2 38.3 6.2L38.3 6.2L38.3 6.2V22.9L38.3 22.9L38.3 22.9C40 22.9 41.7 23 43.4 23C44.6 23 45.7 22.8 46.8 22.4C50.7 20.9 51.4 16.5 51 12.8C50.7 10.2 49.5 7.9 46.9 6.8Z\"\/><path class=\"b\" d=\"M76.8 24.1L75.6 24.1L75.5 24.1L75.5 24.1L75.5 24.1L75.5 24.1L83.5 5L83.5 5L83.5 5H85.2L85.2 5L85.2 5L93.2 24.1L93.2 24.1L93.2 24.1L93.2 24.1C93.2 24.1 93.2 24.1 93.1 24.1L91.8 24.1L91.8 24.1L91.8 24.1L89.2 18.1L89.2 18.1L89.2 18.1H79.4L79.4 18.1L79.4 18.1L76.9 24.1L76.9 24.1C76.9 24.1 76.9 24.1 76.8 24.1ZM84.2 6.4C82.9 9.9 81.4 13.4 79.9 16.8L79.9 16.8L79.9 16.9L79.9 16.9L79.9 16.9L88.7 16.9C88.7 16.9 88.7 16.9 88.7 16.8C87.6 14.2 86.6 11.7 85.5 9.1C85.1 8.2 84.7 7.3 84.4 6.4C84.4 6.3 84.3 6.3 84.3 6.3C84.2 6.3 84.2 6.4 84.2 6.4Z\"\/><path class=\"b\" d=\"M55.8 6.5L54.6 6.5L54.6 6.5L54.6 8.1L54.6 8.1L55.8 8.1C55.8 8.1 55.9 8.1 55.9 8.1L55.9 6.5C55.9 6.5 55.8 6.5 55.8 6.5Z\"\/><path class=\"b\" d=\"M74.1 6.5L72.8 6.5L72.8 6.5L72.8 8.1L72.8 8.1L74.1 8.1L74.1 8.1L74.1 6.5L74.1 6.5Z\"\/><path class=\"b\" d=\"M122.5 6.5H121.3L121.3 6.5V8.1L121.3 8.1H122.5L122.6 8.1V6.5C122.6 6.5 122.6 6.5 122.5 6.5Z\"\/><path class=\"b\" d=\"M69 19.7C69 19.6 68.9 19.6 68.9 19.7C68.2 21.6 66.3 22.9 64.2 22.9C60.5 23.1 58.1 20.9 57.8 17.3C57.5 13.8 58.9 10.4 62.8 9.9C65.4 9.5 68.1 10.6 69 13.3L69 13.3L69 13.3C69.1 13.3 69.1 13.3 69.1 13.2C69.1 12.2 69.1 11.2 69.1 10.1L69.1 10.1L70.2 10.1L70.2 10.1C70.2 10.1 70.2 10.1 70.2 10.2C70.2 14.9 70.2 19.6 70.2 24.3C70.2 24.5 70.2 24.9 70 25.4C69.2 28.8 65.5 29.8 62.5 29C60.2 28.5 58.5 26.7 58.5 24.2L58.5 24.2L58.5 24.2L59.8 24.2C59.8 24.2 59.8 24.2 59.8 24.3C59.8 27.7 62.9 28.4 65.7 28C68 27.6 69 26.1 69 23.8C69 22.4 69 21 69 19.7ZM62.4 11.1C60.3 11.5 59.3 13.1 59.1 15.1C58.8 17.7 59.3 20.8 62.2 21.6C64.7 22.2 67.6 21.6 68.6 18.9C69 17.8 69 16.6 68.9 15.5C68.7 11.9 65.5 10.5 62.4 11.1Z\"\/><path class=\"b\" d=\"M101.5 10C104.1 10.7 105.7 12.8 105.7 15.5L105.7 15.5L105.7 15.5L104.5 15.5C104.5 15.5 104.4 15.5 104.4 15.5C104.5 12.2 102.1 10.7 99.1 11C95.2 11.5 94.4 15.5 94.9 18.7C95.3 21.5 97 23.3 99.9 23.2C101.8 23.2 103.5 22.5 104.2 20.6C104.4 20 104.4 19.4 104.5 18.7L104.5 18.7L105.7 18.7L105.7 18.7L105.7 18.7C105.7 19.1 105.7 19.5 105.6 19.8C105.2 22.4 103.3 24 100.7 24.4C98.6 24.6 96.5 23.9 95.2 22.3C93.8 20.6 93.4 18.4 93.5 16.3C93.7 13.5 95.3 10.8 98.1 10.1C99.2 9.7 100.3 9.7 101.5 10Z\"\/><path class=\"b\" d=\"M119.4 18.7C119.5 21.7 117.4 24 114.6 24.3C110.9 24.8 108.1 22.6 107.4 19.1C106.5 14.8 108.5 9.9 113.4 9.8C116.8 9.8 119.5 12.1 119.4 15.5L119.4 15.5L118.2 15.5C118.2 15.5 118.1 15.5 118.1 15.5C118.1 14.5 117.9 13.5 117.3 12.6C116.2 11.1 114.1 10.8 112.4 11.1C110.6 11.5 109.3 12.7 108.8 14.4C108.4 15.9 108.3 17.6 108.6 19C109.1 21.5 110.7 23.1 113.2 23.2C115.1 23.3 116.9 22.7 117.7 20.9C118 20.2 118.2 19.5 118.1 18.7L118.1 18.7L118.1 18.7C118.1 18.7 118.2 18.7 118.2 18.7L118.2 18.7L119.4 18.7L119.4 18.7Z\"\/><path class=\"b\" d=\"M55.8 9.8H54.6C54.6 9.8 54.6 9.9 54.6 9.9V24.1L54.6 24.1H55.8C55.8 24.1 55.9 24.1 55.9 24.1V9.9C55.9 9.9 55.8 9.8 55.8 9.8Z\"\/><path class=\"b\" d=\"M74.1 9.8H72.8C72.8 9.8 72.8 9.9 72.8 9.9V24.1L72.8 24.1H74.1L74.1 24.1V9.9C74.1 9.9 74.1 9.8 74.1 9.8Z\"\/><path class=\"b\" d=\"M122.6 9.9V24.1L122.6 24.1C122.6 24.1 122.5 24.1 122.5 24.1L121.3 24.1L121.3 24.1L121.3 24.1V9.9L121.3 9.9L121.3 9.8L122.5 9.8C122.5 9.8 122.6 9.8 122.6 9.9L122.6 9.9Z\"\/><path class=\"b\" d=\"M0.4 6.8C1.1 5 2.9 4.7 4.6 4.7C8.5 4.7 12.2 4.7 15.8 4.7L15.8 4.7L15.9 4.6L18.6 0.1C18.6 0.1 18.6 0 18.6 0C18.7 0 18.7 0 18.8 5.9e-06L21.8 0L21.8 0L21.8 0C21.8 0 21.9 0 21.9 0.1C21.9 0.1 21.8 0.1 21.8 0.1C17.9 6.6 14 13.1 10.1 19.6C9.6 20.4 9.3 20.9 9.2 21C7.1 24.2 3.8 26.6 0 27.2L0 27.2L0 27.2L0 27.1C0 27.1 6.5e-05 27.1 0 27.1C0 21.3 0 15.4 0 9.7C0 8.7 0.1 7.7 0.4 6.8ZM3.2 23C4.8 22.1 6 20.8 7 19.2C9.2 15.6 11.4 11.9 13.7 8.2C13.7 8 13.9 7.9 13.9 7.8C14 7.7 13.9 7.7 13.9 7.7C10.3 7.7 6.9 7.7 3.8 7.7C3.4 7.7 3 7.7 2.9 8.2C2.9 8.2 2.9 8.3 2.9 8.4C2.9 12.9 2.9 17.7 2.9 23.1L2.9 23.1L2.9 23.1L2.9 23.1C2.9 23.1 3 23.1 3 23.1C3 23.1 3.1 23 3.2 23Z\"\/><path class=\"g\" d=\"M11.7 29.8L9.1 34.3L9.1 34.3C9.1 34.3 9.1 34.3 9 34.3L5.8 34.4C5.8 34.4 5.8 34.3 5.8 34.3C8.4 30 11 25.6 13.6 21.3C13.9 20.8 14.2 20.4 14.5 19.9C15.6 18 16.8 16.1 17.9 14.1C20 10.7 23.5 8.1 27.5 7.4L27.5 7.4L27.5 7.4L27.5 7.4L27.5 7.4C27.5 12.8 27.5 18.2 27.5 23.7C27.5 24.9 27.5 26.1 27.3 27.3C27 28.4 26.4 29.2 25.3 29.5C24.4 29.8 23.5 29.8 22.6 29.8C18.7 29.8 15.1 29.8 11.8 29.8L11.8 29.8L11.7 29.8ZM13.9 26.3C13.7 26.6 13.6 26.8 13.6 26.9L13.6 26.9L13.6 26.9L13.6 26.9L13.6 26.9C13.6 26.9 17 26.9 23.8 26.9C24.3 26.9 24.6 26.8 24.6 26.3C24.6 21.2 24.6 16.3 24.6 11.6C24.6 11.6 24.6 11.6 24.6 11.5L24.6 11.5L24.6 11.5L24.6 11.5C22.9 12.4 21.5 13.8 20.5 15.4C19.6 16.8 18.4 18.9 16.9 21.5C15.9 23.1 14.9 24.6 13.9 26.3Z\"\/><\/svg><\/span><p class=\"dgv-more-cta-t dgv-grad\">Tool created by DigiAcci\u00f3n<\/p><p class=\"dgv-txt\">DigiAcci\u00f3n is a digital marketing agency in La Massana, Andorra. We do web design, SEO, GEO or AI search optimization, Google Ads, Meta Ads, video, graphic design and online stores for companies in Andorra, Spain and other countries.<\/p><a class=\"dgv-btn dgv-btn--pri\" href=\"https:\/\/www.digiaccion.com\/en\/#contacto\">Talk to DigiAcci\u00f3n<svg class=\"dgv-i dgv-arr\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-arrow\"><\/use><\/svg><\/a><\/div><\/aside>\n<\/div>\n<\/section>\n<section class=\"dgv-sec dgv-rel dgt-more-tools\" aria-labelledby=\"dgt-tools-t\">\n<div class=\"dgv-wrap\">\n<div class=\"dgv-head dgv-head--c dgv-rel-head\" data-dgv-r><p class=\"dgv-h2 dgv-rel-h dgv-grad\" id=\"dgt-tools-t\">More Free Tools by DigiAcci\u00f3n<\/p><p class=\"dgv-intro\">Other everyday tools we have built: the centimeter ruler, symbols, colors, emojis and Japanese letters.<\/p><\/div>\n<ul class=\"dgt-tools\" role=\"list\"><li class=\"dgv-rel-card dgv-glow\" data-dgv-3d data-dgv-r style=\"--dgv-d:0.00s\"><span class=\"dgv-edge\" aria-hidden=\"true\"><\/span><svg class=\"dgv-i dgv-i--f dgv-rel-ic\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-quote\"><\/use><\/svg><svg class=\"dgv-i dgv-rel-go\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-arrow\"><\/use><\/svg><a class=\"dgv-rel-a\" href=\"https:\/\/www.digiaccion.com\/en\/quotation-marks-symbols\/\">Quotation marks and writing symbols to copy<\/a><small class=\"dgt-tools-d\">Quotes, primes, apostrophes, dashes and typographic signs with their codes.<\/small><\/li><li class=\"dgv-rel-card dgv-glow\" data-dgv-3d data-dgv-r style=\"--dgv-d:0.06s\"><span class=\"dgv-edge\" aria-hidden=\"true\"><\/span><svg class=\"dgv-i dgv-rel-ic\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-kana\"><\/use><\/svg><svg class=\"dgv-i dgv-rel-go\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-arrow\"><\/use><\/svg><a class=\"dgv-rel-a\" href=\"https:\/\/www.digiaccion.com\/en\/japanese-alphabet\/\">Japanese letters: hiragana, katakana and kanji<\/a><small class=\"dgt-tools-d\">The Japanese alphabet to copy and a romaji to Japanese converter.<\/small><\/li><li class=\"dgv-rel-card dgv-glow\" data-dgv-3d data-dgv-r style=\"--dgv-d:0.12s\"><span class=\"dgv-edge\" aria-hidden=\"true\"><\/span><svg class=\"dgv-i dgv-rel-ic\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-ruler\"><\/use><\/svg><svg class=\"dgv-i dgv-rel-go\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-arrow\"><\/use><\/svg><a class=\"dgv-rel-a\" href=\"https:\/\/www.digiaccion.com\/en\/online-ruler-cm-mm\/\">Online ruler in cm and mm (actual size)<\/a><small class=\"dgt-tools-d\">Measure in centimeters and millimeters on your screen, with calibration.<\/small><\/li><li class=\"dgv-rel-card dgv-glow\" data-dgv-3d data-dgv-r style=\"--dgv-d:0.00s\"><span class=\"dgv-edge\" aria-hidden=\"true\"><\/span><svg class=\"dgv-i dgv-rel-ic\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-palette\"><\/use><\/svg><svg class=\"dgv-i dgv-rel-go\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-arrow\"><\/use><\/svg><a class=\"dgv-rel-a\" href=\"https:\/\/www.digiaccion.com\/en\/html-color-codes\/\">HTML color codes chart: HEX and RGB<\/a><small class=\"dgt-tools-d\">Hundreds of organized colors, picker, converter and contrast checker.<\/small><\/li><li class=\"dgv-rel-card dgv-glow\" data-dgv-3d data-dgv-r style=\"--dgv-d:0.06s\"><span class=\"dgv-edge\" aria-hidden=\"true\"><\/span><svg class=\"dgv-i dgv-i--f dgv-rel-ic\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-star\"><\/use><\/svg><svg class=\"dgv-i dgv-rel-go\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-arrow\"><\/use><\/svg><a class=\"dgv-rel-a\" href=\"https:\/\/www.digiaccion.com\/en\/star-symbols\/\">Star emojis and star symbols<\/a><small class=\"dgt-tools-d\">Stars to copy and a star rating generator.<\/small><\/li><li class=\"dgv-rel-card dgv-glow\" data-dgv-3d data-dgv-r style=\"--dgv-d:0.12s\"><span class=\"dgv-edge\" aria-hidden=\"true\"><\/span><svg class=\"dgv-i dgv-rel-ic\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-smile\"><\/use><\/svg><svg class=\"dgv-i dgv-rel-go\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-arrow\"><\/use><\/svg><a class=\"dgv-rel-a\" href=\"https:\/\/www.digiaccion.com\/en\/emojis-copy-paste\/\">Emojis to copy and paste<\/a><small class=\"dgt-tools-d\">Nearly 1,900 emojis with search, skin tones and symbols for titles.<\/small><\/li><\/ul>\n<\/div>\n<\/section>\n<section class=\"dgv-sec dgv-final dgt-final\">\n<div class=\"dgv-fx\" aria-hidden=\"true\"><div class=\"dgv-beams dgv-beams--up\"><\/div><\/div>\n<div class=\"dgv-wrap\"><div class=\"dgv-final-card\" data-dgv-r><p class=\"dgv-final-t dgv-grad\">Looking for an agency that specializes in web design, SEO, GEO and AI?<\/p><p class=\"dgv-intro\">DigiAcci\u00f3n, a digital marketing agency in Andorra, works with companies in Andorra, Spain and other countries.<\/p><div class=\"dgv-ctas dgv-ctas--c\"><a class=\"dgv-btn dgv-btn--pri\" href=\"https:\/\/www.digiaccion.com\/en\/#contacto\">Tell us about your project<svg class=\"dgv-i dgv-arr\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-arrow\"><\/use><\/svg><\/a><a class=\"dgv-btn dgv-btn--demo\" href=\"https:\/\/wa.me\/376372337\" target=\"_blank\" rel=\"noopener\"><svg class=\"dgv-i dgt-wa\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-whatsapp\"><\/use><\/svg>Message us on WhatsApp<span class=\"dgv-sr\"> (opens in a new tab)<\/span><\/a><\/div><p class=\"dgv-final-n\">Tool created by <a href=\"https:\/\/www.digiaccion.com\/en\/\">DigiAcci\u00f3n, a digital marketing agency in Andorra<\/a>.<\/p><\/div><\/div>\n<\/section>\n<section class=\"dgv-sec dgv-rel dgv-svc\" aria-labelledby=\"dgv-svc-t\">\n<div class=\"dgv-wrap\">\n<div class=\"dgv-head dgv-head--c dgv-rel-head\" data-dgv-r><p class=\"dgv-h2 dgv-rel-h dgv-grad\" id=\"dgv-svc-t\">Digital Marketing Services by DigiAcci\u00f3n<\/p><p class=\"dgv-intro\">Web design, SEO, GEO, advertising and content so your business gets found and chosen.<\/p><\/div>\n<div class=\"dgv-rel-car dgv-svc-car\" data-dgv-r data-dgv-car>\n<ul class=\"dgv-rel-track dgv-svc-track\" id=\"dgv-svc-track\" role=\"list\"><li class=\"dgv-rel-card dgv-glow\" data-dgv-3d><span class=\"dgv-edge\" aria-hidden=\"true\"><\/span><svg class=\"dgv-i dgv-rel-ic\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-bolt\"><\/use><\/svg><svg class=\"dgv-i dgv-rel-go\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-arrow\"><\/use><\/svg><a class=\"dgv-rel-a\" href=\"https:\/\/www.digiaccion.com\/en\/\">Digital marketing agency in Andorra<\/a><\/li><li class=\"dgv-rel-card dgv-glow\" data-dgv-3d><span class=\"dgv-edge\" aria-hidden=\"true\"><\/span><svg class=\"dgv-i dgv-rel-ic\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-layout\"><\/use><\/svg><svg class=\"dgv-i dgv-rel-go\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-arrow\"><\/use><\/svg><a class=\"dgv-rel-a\" href=\"https:\/\/www.digiaccion.com\/en\/web-design-agency-in-andorra\/\">Web design agency in Andorra<\/a><\/li><li class=\"dgv-rel-card dgv-glow\" data-dgv-3d><span class=\"dgv-edge\" aria-hidden=\"true\"><\/span><svg class=\"dgv-i dgv-rel-ic\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-chart\"><\/use><\/svg><svg class=\"dgv-i dgv-rel-go\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-arrow\"><\/use><\/svg><a class=\"dgv-rel-a\" href=\"https:\/\/www.digiaccion.com\/en\/seo-organic-positioning-agency-andorra\/\">SEO agency in Andorra<\/a><\/li><li class=\"dgv-rel-card dgv-glow\" data-dgv-3d><span class=\"dgv-edge\" aria-hidden=\"true\"><\/span><svg class=\"dgv-i dgv-rel-ic\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-megaphone\"><\/use><\/svg><svg class=\"dgv-i dgv-rel-go\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-arrow\"><\/use><\/svg><a class=\"dgv-rel-a\" href=\"https:\/\/www.digiaccion.com\/en\/google-ads-sem-agency-in-andorra\/\">Google Ads agency in Andorra<\/a><\/li><li class=\"dgv-rel-card dgv-glow\" data-dgv-3d><span class=\"dgv-edge\" aria-hidden=\"true\"><\/span><svg class=\"dgv-i dgv-rel-ic\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-target\"><\/use><\/svg><svg class=\"dgv-i dgv-rel-go\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-arrow\"><\/use><\/svg><a class=\"dgv-rel-a\" href=\"https:\/\/www.digiaccion.com\/en\/meta-ads-agency-facebook-ads-in-andorra\/\">Social Ads agency in Andorra<\/a><\/li><li class=\"dgv-rel-card dgv-glow\" data-dgv-3d><span class=\"dgv-edge\" aria-hidden=\"true\"><\/span><svg class=\"dgv-i dgv-rel-ic\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-video\"><\/use><\/svg><svg class=\"dgv-i dgv-rel-go\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-arrow\"><\/use><\/svg><a class=\"dgv-rel-a\" href=\"https:\/\/www.digiaccion.com\/en\/video-production-editing-agency-andorra\/\">Video production and editing agency in Andorra<\/a><\/li><li class=\"dgv-rel-card dgv-glow\" data-dgv-3d><span class=\"dgv-edge\" aria-hidden=\"true\"><\/span><svg class=\"dgv-i dgv-rel-ic\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-sparkles\"><\/use><\/svg><svg class=\"dgv-i dgv-rel-go\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-arrow\"><\/use><\/svg><a class=\"dgv-rel-a\" href=\"https:\/\/www.digiaccion.com\/en\/geo-agency-ai-chat-positioning-andorra\/\">GEO agency in Andorra<\/a><\/li><li class=\"dgv-rel-card dgv-glow\" data-dgv-3d><span class=\"dgv-edge\" aria-hidden=\"true\"><\/span><svg class=\"dgv-i dgv-rel-ic\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-pen\"><\/use><\/svg><svg class=\"dgv-i dgv-rel-go\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-arrow\"><\/use><\/svg><a class=\"dgv-rel-a\" href=\"https:\/\/www.digiaccion.com\/en\/graphic-design-agency-andorra\/\">Graphic design agency in Andorra<\/a><\/li><li class=\"dgv-rel-card dgv-glow\" data-dgv-3d><span class=\"dgv-edge\" aria-hidden=\"true\"><\/span><svg class=\"dgv-i dgv-rel-ic\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-shop\"><\/use><\/svg><svg class=\"dgv-i dgv-rel-go\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-arrow\"><\/use><\/svg><a class=\"dgv-rel-a dgv-rel-a--guion\" href=\"https:\/\/www.digiaccion.com\/en\/e-commerce-design-agency-andorra\/\">E-commerce agency in Andorra<\/a><\/li><\/ul>\n<div class=\"dgv-rel-nav\"><span class=\"dgv-rel-bar\" aria-hidden=\"true\"><i><\/i><\/span><span class=\"dgv-rel-btns\"><button class=\"dgv-rel-btn\" type=\"button\" data-dir=\"-1\" aria-controls=\"dgv-svc-track\" aria-label=\"Previous services\"><svg class=\"dgv-i dgv-rel-prev\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-arrow\"><\/use><\/svg><\/button><button class=\"dgv-rel-btn\" type=\"button\" data-dir=\"1\" aria-controls=\"dgv-svc-track\" aria-label=\"Next services\"><svg class=\"dgv-i\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-arrow\"><\/use><\/svg><\/button><\/span><\/div>\n<\/div>\n<\/div>\n<\/section>\n<section class=\"dgv-sec dgv-rel\" aria-labelledby=\"dgv-rel-t\">\n<div class=\"dgv-fx\" aria-hidden=\"true\"><div class=\"dgv-rel-glow\"><\/div><\/div>\n<div class=\"dgv-wrap\">\n<div class=\"dgv-head dgv-head--c dgv-rel-head\" data-dgv-r><p class=\"dgv-h2 dgv-rel-h dgv-grad\" id=\"dgv-rel-t\">Web Design by Industry and Marketing for Lawyers<\/p><p class=\"dgv-intro\">Websites built for each type of business, with their own content and SEO.<\/p><\/div>\n<div class=\"dgv-rel-car\" data-dgv-r data-dgv-car>\n<ul class=\"dgv-rel-track\" id=\"dgv-rel-track\" role=\"list\"><li class=\"dgv-rel-card dgv-glow\" data-dgv-3d><span class=\"dgv-edge\" aria-hidden=\"true\"><\/span><svg class=\"dgv-i dgv-rel-ic\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-briefcase\"><\/use><\/svg><svg class=\"dgv-i dgv-rel-go\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-arrow\"><\/use><\/svg><a class=\"dgv-rel-a\" href=\"https:\/\/www.digiaccion.com\/en\/web-design-agency-consulting-management-firms\/\">Web design for consulting and management firms<\/a><\/li><li class=\"dgv-rel-card dgv-glow\" data-dgv-3d><span class=\"dgv-edge\" aria-hidden=\"true\"><\/span><svg class=\"dgv-i dgv-rel-ic\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-scale\"><\/use><\/svg><svg class=\"dgv-i dgv-rel-go\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-arrow\"><\/use><\/svg><a class=\"dgv-rel-a\" href=\"https:\/\/www.digiaccion.com\/en\/web-design-agency-lawyers-law-firms\/\">Web design for lawyers and law firms<\/a><\/li><li class=\"dgv-rel-card dgv-glow\" data-dgv-3d><span class=\"dgv-edge\" aria-hidden=\"true\"><\/span><svg class=\"dgv-i dgv-rel-ic\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-megaphone\"><\/use><\/svg><svg class=\"dgv-i dgv-rel-go\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-arrow\"><\/use><\/svg><a class=\"dgv-rel-a\" href=\"https:\/\/www.digiaccion.com\/en\/legal-marketing-agency-lawyers\/\">Digital marketing agency for lawyers<\/a><\/li><li class=\"dgv-rel-card dgv-glow\" data-dgv-3d><span class=\"dgv-edge\" aria-hidden=\"true\"><\/span><svg class=\"dgv-i dgv-rel-ic\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-compass\"><\/use><\/svg><svg class=\"dgv-i dgv-rel-go\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-arrow\"><\/use><\/svg><a class=\"dgv-rel-a\" href=\"https:\/\/www.digiaccion.com\/en\/web-design-agency-architects-interior-designers\/\">Web design for architects and interior designers<\/a><\/li><li class=\"dgv-rel-card dgv-glow\" data-dgv-3d><span class=\"dgv-edge\" aria-hidden=\"true\"><\/span><svg class=\"dgv-i dgv-rel-ic\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-food\"><\/use><\/svg><svg class=\"dgv-i dgv-rel-go\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-arrow\"><\/use><\/svg><a class=\"dgv-rel-a\" href=\"https:\/\/www.digiaccion.com\/en\/web-design-agency-restaurants-hospitality\/\">Web design for restaurants and hospitality<\/a><\/li><li class=\"dgv-rel-card dgv-glow\" data-dgv-3d><span class=\"dgv-edge\" aria-hidden=\"true\"><\/span><svg class=\"dgv-i dgv-rel-ic\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-health\"><\/use><\/svg><svg class=\"dgv-i dgv-rel-go\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-arrow\"><\/use><\/svg><a class=\"dgv-rel-a\" href=\"https:\/\/www.digiaccion.com\/en\/web-design-agency-clinics-healthcare\/\">Web design for clinics and healthcare<\/a><\/li><li class=\"dgv-rel-card dgv-glow\" data-dgv-3d><span class=\"dgv-edge\" aria-hidden=\"true\"><\/span><svg class=\"dgv-i dgv-rel-ic\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-home\"><\/use><\/svg><svg class=\"dgv-i dgv-rel-go\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-arrow\"><\/use><\/svg><a class=\"dgv-rel-a\" href=\"https:\/\/www.digiaccion.com\/en\/web-design-agency-real-estate\/\">Real estate website design<\/a><\/li><li class=\"dgv-rel-card dgv-glow\" data-dgv-3d><span class=\"dgv-edge\" aria-hidden=\"true\"><\/span><svg class=\"dgv-i dgv-rel-ic\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-crane\"><\/use><\/svg><svg class=\"dgv-i dgv-rel-go\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-arrow\"><\/use><\/svg><a class=\"dgv-rel-a\" href=\"https:\/\/www.digiaccion.com\/en\/web-design-agency-construction-contractors\/\">Contractor website design<\/a><\/li><li class=\"dgv-rel-card dgv-glow\" data-dgv-3d><span class=\"dgv-edge\" aria-hidden=\"true\"><\/span><svg class=\"dgv-i dgv-rel-ic\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-bed\"><\/use><\/svg><svg class=\"dgv-i dgv-rel-go\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-arrow\"><\/use><\/svg><a class=\"dgv-rel-a\" href=\"https:\/\/www.digiaccion.com\/en\/web-design-agency-hotels\/\">Hotel website design<\/a><\/li><li class=\"dgv-rel-card dgv-glow\" data-dgv-3d><span class=\"dgv-edge\" aria-hidden=\"true\"><\/span><svg class=\"dgv-i dgv-rel-ic\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-mountain\"><\/use><\/svg><svg class=\"dgv-i dgv-rel-go\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-arrow\"><\/use><\/svg><a class=\"dgv-rel-a\" href=\"https:\/\/www.digiaccion.com\/en\/web-design-agency-vacation-rentals\/\">Vacation rental website design<\/a><\/li><li class=\"dgv-rel-card dgv-glow\" data-dgv-3d><span class=\"dgv-edge\" aria-hidden=\"true\"><\/span><svg class=\"dgv-i dgv-rel-ic\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-wrench\"><\/use><\/svg><svg class=\"dgv-i dgv-rel-go\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-arrow\"><\/use><\/svg><a class=\"dgv-rel-a\" href=\"https:\/\/www.digiaccion.com\/en\/web-design-agency-auto-repair-shops\/\">Auto repair website design<\/a><\/li><li class=\"dgv-rel-card dgv-glow\" data-dgv-3d><span class=\"dgv-edge\" aria-hidden=\"true\"><\/span><svg class=\"dgv-i dgv-rel-ic\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-paw\"><\/use><\/svg><svg class=\"dgv-i dgv-rel-go\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-arrow\"><\/use><\/svg><a class=\"dgv-rel-a\" href=\"https:\/\/www.digiaccion.com\/en\/web-design-agency-veterinary-clinics\/\">Veterinary website design<\/a><\/li><li class=\"dgv-rel-card dgv-glow\" data-dgv-3d><span class=\"dgv-edge\" aria-hidden=\"true\"><\/span><svg class=\"dgv-i dgv-rel-ic\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-dumbbell\"><\/use><\/svg><svg class=\"dgv-i dgv-rel-go\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-arrow\"><\/use><\/svg><a class=\"dgv-rel-a\" href=\"https:\/\/www.digiaccion.com\/en\/web-design-agency-gyms-fitness\/\">Gym and fitness website design<\/a><\/li><li class=\"dgv-rel-card dgv-glow\" data-dgv-3d><span class=\"dgv-edge\" aria-hidden=\"true\"><\/span><svg class=\"dgv-i dgv-rel-ic\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-cpu\"><\/use><\/svg><svg class=\"dgv-i dgv-rel-go\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-arrow\"><\/use><\/svg><a class=\"dgv-rel-a\" href=\"https:\/\/www.digiaccion.com\/en\/web-design-agency-it-companies\/\">Website design for IT companies<\/a><\/li><li class=\"dgv-rel-card dgv-glow\" data-dgv-3d><span class=\"dgv-edge\" aria-hidden=\"true\"><\/span><svg class=\"dgv-i dgv-rel-ic\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-hanger\"><\/use><\/svg><svg class=\"dgv-i dgv-rel-go\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-arrow\"><\/use><\/svg><a class=\"dgv-rel-a\" href=\"https:\/\/www.digiaccion.com\/en\/web-design-agency-fashion-brands\/\">Fashion website design<\/a><\/li><\/ul>\n<div class=\"dgv-rel-nav\"><span class=\"dgv-rel-bar\" aria-hidden=\"true\"><i><\/i><\/span><span class=\"dgv-rel-btns\"><button class=\"dgv-rel-btn\" type=\"button\" data-dir=\"-1\" aria-controls=\"dgv-rel-track\" aria-label=\"Previous industries\"><svg class=\"dgv-i dgv-rel-prev\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-arrow\"><\/use><\/svg><\/button><button class=\"dgv-rel-btn\" type=\"button\" data-dir=\"1\" aria-controls=\"dgv-rel-track\" aria-label=\"Next industries\"><svg class=\"dgv-i\" aria-hidden=\"true\" focusable=\"false\"><use href=\"#dgv-i-arrow\"><\/use><\/svg><\/button><\/span><\/div>\n<\/div>\n<\/div>\n<\/section>\n<div class=\"dgt-toast\" data-dgt-toast role=\"status\" aria-live=\"polite\"><\/div>\n<\/div>\n<script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebApplication\",\"@id\":\"https:\/\/www.digiaccion.com\/en\/online-ruler-inches\/#herramienta\",\"name\":\"Online Ruler in Inches\",\"description\":\"On-screen ruler with inches and 1\/16 fractions, centimeters, a measuring marker, Go to a length, fixed 12, 6, 4, 3, 2 and 1 inch rulers and calibration. Free, by DigiAcci\u00f3n.\",\"url\":\"https:\/\/www.digiaccion.com\/en\/online-ruler-inches\/\",\"applicationCategory\":\"UtilitiesApplication\",\"operatingSystem\":\"Any\",\"browserRequirements\":\"Requires JavaScript\",\"inLanguage\":\"en-US\",\"isAccessibleForFree\":true,\"offers\":{\"@type\":\"Offer\",\"price\":\"0\",\"priceCurrency\":\"EUR\"},\"creator\":{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.digiaccion.com\/#organization\",\"name\":\"DigiAcci\u00f3n\",\"url\":\"https:\/\/www.digiaccion.com\/\"},\"publisher\":{\"@id\":\"https:\/\/www.digiaccion.com\/#organization\"},\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.digiaccion.com\/en\/online-ruler-inches\/#webpage\"}},{\"@type\":\"FAQPage\",\"@id\":\"https:\/\/www.digiaccion.com\/en\/online-ruler-inches\/#faq\",\"url\":\"https:\/\/www.digiaccion.com\/en\/online-ruler-inches\/\",\"isPartOf\":{\"@id\":\"https:\/\/www.digiaccion.com\/en\/online-ruler-inches\/#webpage\"},\"inLanguage\":\"en-US\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"How big is an inch?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"An inch is exactly 2.54 cm, or 25.4 mm. To see one at actual size, calibrate your screen and look at the 1 inch ruler below the main one. Twelve inches make a foot, which is 30.48 cm.\"}},{\"@type\":\"Question\",\"name\":\"What does 2 inches look like?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Two inches is 5.08 cm, slightly shorter than the short side of a credit card (2 1\/8 inches). To see it at actual size, calibrate your screen and look at the 2 inch ruler on this page, or type 2 in Go to a length and the marker moves to the 2 inch mark.\"}},{\"@type\":\"Question\",\"name\":\"How long is 5 inches?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Five inches is 12.7 cm. There is no fixed 5 inch ruler on this page, but you can type 5 in Go to a length: the marker moves to the 5 inch mark and the bottom scale shows 12.7 cm. It fits on a laptop screen; on a phone, turn it sideways, and if it still does not fit, a message tells you how much does.\"}},{\"@type\":\"Question\",\"name\":\"How many inches is a ruler?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"A standard US ruler is 12 inches, one foot (30.48 cm), and this page has one at actual size. A 30 cm metric ruler is 11.81 inches, and a 6 inch ruler is 15.24 cm.\"}},{\"@type\":\"Question\",\"name\":\"How do you read inches on a ruler?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Line up the object with 0, read the last whole number it passes and count the marks left until its end. On a ruler with 16 divisions, each mark is 1\/16 inch; then reduce the fraction (4\/16 is 1\/4). On this online ruler, the marker does the counting for you.\"}},{\"@type\":\"Question\",\"name\":\"What is 3\/8 on a ruler?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Three eighths of an inch is 0.375 in, or 9.525 mm. On a ruler marked in sixteenths it is the sixth mark after a whole number, halfway between 1\/4 and 1\/2.\"}},{\"@type\":\"Question\",\"name\":\"What are the fractions of an inch?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Inches are split in halves: 1\/2, 1\/4, 1\/8 and 1\/16 on everyday rulers and tape measures, and 1\/32 or 1\/64 on precision tools. Each fraction is half the size of the previous one, so 1\/16 inch is 1.5875 mm.\"}},{\"@type\":\"Question\",\"name\":\"Is there a virtual ruler?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Yes. This page is a free virtual ruler that works in any browser, with inches on top and centimeters below. Calibrate it once with a credit card or your screen size and it measures at actual size.\"}},{\"@type\":\"Question\",\"name\":\"Can I use a ruler on my phone?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Yes. Open this page in your phone browser, calibrate it with a credit card and turn the phone sideways for more length. In portrait mode only a few inches fit: the fixed rulers that do not fit scroll sideways, and longer items are easier to measure in sections or on a computer.\"}},{\"@type\":\"Question\",\"name\":\"Is an online ruler accurate?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Only once you calibrate it. Uncalibrated, it depends on the pixel size of each screen and can be far off. Calibrated with a carefully matched credit card, the error stays under a millimeter over a few inches; for tight shop tolerances, use a caliper.\"}},{\"@type\":\"Question\",\"name\":\"How do I change the ruler to inches in Word?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"In Word for Windows, open File, go to Options and then Advanced. Under Display, choose Inches in \\\"Show measurements in units of\\\" and select OK: the ruler and margins switch to inches.\"}},{\"@type\":\"Question\",\"name\":\"How do I find 7\/16 on a tape measure?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Count seven sixteenth marks after the whole number: 7\/16 sits one mark before the half inch (8\/16). It equals 0.4375 in, or 11.1125 mm.\"}}]}]}<\/script>\n<script id=\"dgv-js\">\n\/* DigiAcci\u00f3n | P\u00e1ginas verticales | JS del bloque (nativo, sin librer\u00edas).\n   No se ejecuta en el constructor visual de Divi (body.et-fb o ?et_fb=1): all\u00ed todo queda desplegado y editable. *\/\n(function () {\n  var d = document, b = d.body;\n  if (!b || b.classList.contains('et-fb') || \/[?&](et_fb|et_pb_preview)=\/.test(location.search)) return;\n  var roots = d.querySelectorAll('.dgv[data-dgv]');\n  var RM = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n  var FINE = window.matchMedia && window.matchMedia('(hover: hover) and (pointer: fine)').matches;\n  function each(list, fn) { Array.prototype.forEach.call(list, fn); }\n  each(roots, function (root) {\n    if (root.getAttribute('data-dgv-on')) return;\n    root.setAttribute('data-dgv-on', '1');\n    root.classList.add('dgv-js');\n    \/* 10. Nota y n\u00famero de rese\u00f1as de Google desde verticales.css (v11): :root{--dgv-google-nota;--dgv-google-resenas}.\n       Si cambian all\u00ed, se actualizan todas las menciones del bloque ([data-dgv-g]) sin volver a pegar el c\u00f3digo.\n       El HTML lleva el valor del d\u00eda en que se construy\u00f3 (es lo que se ve sin JS y lo que leen los buscadores). *\/\n    (function () {\n      var cs = getComputedStyle(d.documentElement);\n      function val(n) { return (cs.getPropertyValue(n) || '').trim().replace(\/^[\"']|[\"']$\/g, ''); }\n      var nota = val('--dgv-google-nota'), res = val('--dgv-google-resenas');\n      if (!\/^\\d([.,]\\d)?$\/.test(nota)) nota = '';\n      if (!\/^\\d{1,5}$\/.test(res)) res = '';\n      if (nota && \/^en\/i.test(root.getAttribute('lang') || '')) nota = nota.replace(',', '.');\n      if (nota) each(root.querySelectorAll('[data-dgv-g=\"nota\"]'), function (el) { if (el.textContent !== nota) el.textContent = nota; });\n      if (res) each(root.querySelectorAll('[data-dgv-g=\"resenas\"]'), function (el) { if (el.textContent !== res) el.textContent = res; });\n    })();\n    \/* 1. Aparici\u00f3n suave al entrar en pantalla *\/\n    var rv = root.querySelectorAll('[data-dgv-r]');\n    var late = window.performance && performance.now() > 4000; \/* script retrasado por un optimizador: sin animaci\u00f3n de entrada *\/\n    if (!RM && !late && 'IntersectionObserver' in window) {\n      var io = new IntersectionObserver(function (es) {\n        es.forEach(function (e) { if (e.isIntersecting) { e.target.classList.add('is-in'); io.unobserve(e.target); } });\n      }, { rootMargin: '0px 0px -6% 0px', threshold: 0.06 });\n      each(rv, function (el) { io.observe(el); });\n    } else { each(rv, function (el) { el.classList.add('is-in'); }); }\n    \/* 2. Preguntas frecuentes: botones con aria-expanded (rat\u00f3n y teclado) *\/\n    each(root.querySelectorAll('.dgv-faq-btn'), function (btn) {\n      btn.addEventListener('click', function () {\n        var item = btn.closest('.dgv-faq-item'), open = btn.getAttribute('aria-expanded') !== 'true';\n        btn.setAttribute('aria-expanded', open ? 'true' : 'false');\n        item.classList.toggle('is-open', open);\n      });\n    });\n    \/* 3. \"Leer m\u00e1s\": texto completo en el HTML, plegado con degradado *\/\n    var more = root.querySelector('[data-dgv-more]'), mb = root.querySelector('.dgv-more-btn');\n    if (more && mb) {\n      var lab = mb.querySelector('.dgv-more-lab');\n      var setMore = function (open, fromFocus) {\n        if (open === more.classList.contains('is-open')) return;\n        mb.setAttribute('aria-expanded', open ? 'true' : 'false');\n        if (lab) lab.textContent = mb.getAttribute(open ? 'data-less' : 'data-more');\n        if (open) {\n          more.style.maxHeight = more.scrollHeight + 'px';\n          more.classList.add('is-open');\n          var done = function () { more.style.maxHeight = 'none'; more.removeEventListener('transitionend', done); };\n          if (RM || fromFocus) done(); else more.addEventListener('transitionend', done);\n        } else {\n          more.style.maxHeight = more.scrollHeight + 'px';\n          void more.offsetHeight;\n          more.classList.remove('is-open');\n          more.style.maxHeight = '';\n          var card = more.closest('.dgv-more-card') || more;\n          var top = card.getBoundingClientRect().top;\n          if (top < 0) window.scrollTo({ top: window.pageYOffset + top - 110, behavior: RM ? 'auto' : 'smooth' });\n        }\n      };\n      mb.addEventListener('click', function () { setMore(mb.getAttribute('aria-expanded') !== 'true'); });\n      more.addEventListener('focusin', function () { setMore(true, true); });\n    }\n    \/* 4. Luz que sigue al cursor en las tarjetas con borde luminoso *\/\n    if (FINE && !RM) {\n      root.addEventListener('pointermove', function (e) {\n        var c = e.target.closest ? e.target.closest('.dgv-glow') : null;\n        if (!c) return;\n        var r = c.getBoundingClientRect();\n        c.style.setProperty('--dgv-mx', (e.clientX - r.left) + 'px');\n        c.style.setProperty('--dgv-my', (e.clientY - r.top) + 'px');\n      }, { passive: true });\n      \/* Inclinaci\u00f3n ligera de la ventana de la demo *\/\n      each(root.querySelectorAll('[data-dgv-tilt]'), function (w) {\n        w.addEventListener('pointermove', function (e) {\n          var r = w.getBoundingClientRect(), x = (e.clientX - r.left) \/ r.width - 0.5, y = (e.clientY - r.top) \/ r.height - 0.5;\n          w.style.setProperty('--dgv-ry', (x * 5).toFixed(2) + 'deg');\n          w.style.setProperty('--dgv-rx', (-y * 4).toFixed(2) + 'deg');\n        }, { passive: true });\n        w.addEventListener('pointerleave', function () { w.style.setProperty('--dgv-ry', '0deg'); w.style.setProperty('--dgv-rx', '0deg'); });\n      });\n    }\n    \/* 5. Frases de impacto: una diapositiva por frase a pantalla completa. La secci\u00f3n queda fijada (sticky en la CSS)\n       y la pista se desplaza en horizontal seg\u00fan el scroll vertical dentro de ella. Sin JS o con movimiento reducido,\n       la CSS deja las frases una debajo de otra. Cada diapositiva se queda quieta un tramo (HOLD) para que en reposo\n       no se vean dos a medias, y el paso de una a otra va suavizado. *\/\n    var hx = root.querySelector('[data-dgv-hx]');\n    var hxs = hx ? hx.querySelectorAll('.dgv-hx-slide') : [], hxn = hxs.length, hxp = hx && hx.querySelector('.dgv-hx-pin');\n    if (hx && hxp && hxn > 1 && !RM) {\n      hx.classList.add('is-hx');\n      var cnt = hx.querySelector('.dgv-hx-count'), HOLD = 0.22, hxTick = false, hxLive = false, hxCur = -1;\n      var clamp = function (v, a, z) { return v < a ? a : (v > z ? z : v); };\n      var ease = function (t) { return t * t * t * (t * (t * 6 - 15) + 10); };\n      var hxPaint = function () {\n        hxTick = false;\n        if (!hx.classList.contains('is-hx')) return;\n        var r = hx.getBoundingClientRect(), ph = hxp.offsetHeight, run = r.height - ph;\n        \/* Seguro: si algo de la p\u00e1gina rompe el sticky (overflow o transform en un ancestro), el pin no se queda\n           arriba dentro del recorrido; entonces se vuelve a las frases una debajo de otra. *\/\n        if (r.top < -40 && r.bottom > ph + 40 && Math.abs(hxp.getBoundingClientRect().top) > 4) {\n          hx.classList.remove('is-hx'); hxListen(false); return;\n        }\n        var p = run > 0 ? clamp(-r.top \/ run, 0, 1) : 0;\n        var s = p * (hxn - 1), k = Math.min(hxn - 2, Math.floor(s));\n        var x = k + ease(clamp((s - k - HOLD) \/ (1 - 2 * HOLD), 0, 1)), t = x \/ (hxn - 1) * 2;\n        hx.style.setProperty('--dgv-hx-x', x.toFixed(4));\n        hx.style.setProperty('--dgv-hx-p', p.toFixed(4));\n        hx.style.setProperty('--dgv-hx-bar', ((1 + x) \/ hxn).toFixed(4));\n        for (var j = 0; j < 3; j++) hx.style.setProperty('--dgv-hx-w' + j, Math.max(0, 1 - Math.abs(t - j)).toFixed(3));\n        each(hxs, function (sl, i) {\n          var o = clamp(i - x, -1, 1);\n          sl.style.setProperty('--dgv-hx-o', o.toFixed(4));\n          sl.style.setProperty('--dgv-hx-a', Math.abs(o).toFixed(4));\n        });\n        var cur = Math.round(x);\n        if (cur !== hxCur && cnt) { hxCur = cur; cnt.setAttribute('data-n', (cur < 9 ? '0' : '') + (cur + 1)); }\n      };\n      var hxOn = function () { if (!hxTick) { hxTick = true; window.requestAnimationFrame(hxPaint); } };\n      var hxListen = function (on) {\n        if (!hx.classList.contains('is-hx')) on = false;\n        if (on === hxLive) return;\n        hxLive = on;\n        window[on ? 'addEventListener' : 'removeEventListener']('scroll', hxOn, { passive: true });\n        window[on ? 'addEventListener' : 'removeEventListener']('resize', hxOn, { passive: true });\n        hxOn();\n      };\n      if ('IntersectionObserver' in window) {\n        new IntersectionObserver(function (es) { hxListen(es[es.length - 1].isIntersecting); }, { rootMargin: '25% 0px 25% 0px' }).observe(hx);\n      } else { hxListen(true); }\n      hxPaint();\n    }\n    \/* 6. Carruseles ([data-dgv-car]: servicios relacionados, servicios principales en m\u00f3vil y testimonios), cada uno por\n       separado. Scroll nativo (scroll-snap en la CSS: se desliza con el dedo, el trackpad o el teclado). Los botones pasan\n       una p\u00e1gina de tarjetas y quedan desactivados (aria-disabled, siguen enfocables) en cada extremo. Si todas las\n       tarjetas caben (o la CSS las pone en cuadr\u00edcula), .is-static y sin botones. Sin JS los botones no se ven y la pista\n       sigue siendo deslizable. *\/\n    each(root.querySelectorAll('[data-dgv-car]'), function (car) {\n      var tr = car.querySelector('.dgv-rel-track'), rb = car.querySelectorAll('.dgv-rel-btn');\n      if (!tr || rb.length < 2 || !tr.children.length) return;\n      var cards = tr.children, relTick = false;\n      var off = function (bt, v) { bt.setAttribute('aria-disabled', v ? 'true' : 'false'); };\n      var relPaint = function () {\n        relTick = false;\n        var max = tr.scrollWidth - tr.clientWidth, x = tr.scrollLeft;\n        car.classList.toggle('is-static', max <= 2);\n        off(rb[0], x <= 2); off(rb[1], x >= max - 2);\n        car.style.setProperty('--dgv-rel-w', (tr.clientWidth \/ tr.scrollWidth).toFixed(4));\n        car.style.setProperty('--dgv-rel-x', (tr.scrollWidth ? x \/ tr.scrollWidth : 0).toFixed(4));\n      };\n      var relOn = function () { if (!relTick) { relTick = true; window.requestAnimationFrame(relPaint); } };\n      each(rb, function (bt) {\n        bt.addEventListener('click', function () {\n          if (bt.getAttribute('aria-disabled') === 'true') return;\n          var cs = getComputedStyle(tr), pl = parseFloat(cs.paddingLeft) || 0, pr = parseFloat(cs.paddingRight) || 0;\n          var gap = parseFloat(cs.columnGap) || 0, tl = tr.getBoundingClientRect().left + pl;\n          var w = cards[0].getBoundingClientRect().width, n = cards.length, k = 0;\n          var per = Math.max(1, Math.floor((tr.clientWidth - pl - pr + gap + 2) \/ (w + gap)));\n          while (k < n - 1 && cards[k].getBoundingClientRect().left < tl - 2) k++;   \/* primera tarjeta visible entera *\/\n          var to = Math.max(0, Math.min(n - 1, k + (bt.getAttribute('data-dir') === '-1' ? -per : per)));\n          var max = tr.scrollWidth - tr.clientWidth;\n          var left = Math.max(0, Math.min(max, tr.scrollLeft + cards[to].getBoundingClientRect().left - tl));\n          tr.scrollTo({ left: left, behavior: RM ? 'auto' : 'smooth' });\n        });\n      });\n      tr.addEventListener('scroll', relOn, { passive: true });\n      window.addEventListener('resize', relOn, { passive: true });\n      if ('ResizeObserver' in window) new ResizeObserver(relOn).observe(tr);\n      relPaint();\n    });\n    \/* 8. Testimonios con el texto largo: las citas largas llevan en el HTML el texto completo y un bot\u00f3n oculto (hidden).\n       Si el texto pasa de 7 l\u00edneas (6 = --dgv-q-lines en la CSS, m\u00e1s una de margen) en el ancho actual, la tarjeta pasa a .is-clamp (texto\n       recortado con degradado) y se ense\u00f1a el bot\u00f3n \"+ Leer m\u00e1s\", que lo despliega en la propia tarjeta (aria-expanded y el\n       texto del bot\u00f3n cambian). Las tarjetas cerradas del carrusel tienen el mismo alto; al desplegar una, la pista pasa a\n       .has-open y fija el alto de las dem\u00e1s (--dgv-qh), as\u00ed solo crece la desplegada. Se recalcula al cambiar el ancho y al\n       cargar las fuentes. Sin JS: texto entero, sin bot\u00f3n. *\/\n    var qs = root.querySelectorAll('.dgv-quote'), qW = -1, qTick = false;\n    var qAfter = function (el, fn) {           \/* fin de la transici\u00f3n (o enseguida con movimiento reducido) *\/\n      var ok = false, go = function () { if (ok) return; ok = true; el.removeEventListener('transitionend', go); fn(); };\n      if (RM) { go(); return; }\n      el.addEventListener('transitionend', go); setTimeout(go, 800);\n    };\n    var qLock = function (tr) {                 \/* alto de las tarjetas cerradas, medido con las abiertas recortadas *\/\n      if (!tr || !tr.classList.contains('has-open')) return;\n      var open = tr.querySelectorAll('.dgv-quote.is-open');\n      each(open, function (f) { f.classList.add('is-measuring'); });\n      tr.classList.remove('has-open');\n      var h = tr.firstElementChild ? tr.firstElementChild.offsetHeight : 0;\n      tr.style.setProperty('--dgv-qh', h + 'px');\n      tr.classList.add('has-open');\n      each(open, function (f) { f.classList.remove('is-measuring'); });\n    };\n    var qFit = function () {\n      each(qs, function (fig) {\n        var bt = fig.querySelector('.dgv-q-more'), bq = fig.querySelector('.dgv-q-body');\n        if (!bt || !bq) return;\n        var cs = getComputedStyle(bq), lh = parseFloat(cs.lineHeight) || parseFloat(cs.fontSize) * 1.5;\n        var n = parseFloat(getComputedStyle(fig).getPropertyValue('--dgv-q-lines')) || 6;\n        var long = bq.scrollHeight > lh * (n + 1) + 4;   \/* con una sola l\u00ednea de m\u00e1s se lee entera: no se recorta *\/\n        if (long || fig.classList.contains('is-open')) { bt.hidden = false; fig.classList.add('is-clamp'); }\n        else { bt.hidden = true; fig.classList.remove('is-clamp'); }\n      });\n      each(root.querySelectorAll('.dgv-qcar-track.has-open'), qLock);\n    };\n    each(qs, function (fig) {\n      var bt = fig.querySelector('.dgv-q-more'), bq = fig.querySelector('.dgv-q-body');\n      if (!bt || !bq) return;\n      var lab = bt.querySelector('.dgv-q-lab');\n      bt.addEventListener('click', function () {\n        var open = bt.getAttribute('aria-expanded') !== 'true', tr = fig.closest('.dgv-qcar-track'), it = fig.parentNode;\n        bt.setAttribute('aria-expanded', open ? 'true' : 'false');\n        if (lab) lab.textContent = bt.getAttribute(open ? 'data-less' : 'data-more');\n        if (open) {\n          if (tr && !tr.classList.contains('has-open')) { tr.style.setProperty('--dgv-qh', it.offsetHeight + 'px'); tr.classList.add('has-open'); }\n          bq.style.maxHeight = bq.scrollHeight + 'px';\n          fig.classList.add('is-open');\n          qAfter(bq, function () { if (fig.classList.contains('is-open')) bq.style.maxHeight = 'none'; });\n        } else {\n          var top = fig.getBoundingClientRect().top;     \/* si la tarjeta empieza por encima de la pantalla, se vuelve a ella *\/\n          if (top < 80) window.scrollTo({ top: window.pageYOffset + top - 110, behavior: RM ? 'auto' : 'smooth' });\n          bq.style.maxHeight = bq.scrollHeight + 'px';\n          void bq.offsetHeight;\n          fig.classList.remove('is-open');\n          bq.style.maxHeight = '';\n          qAfter(bq, function () {\n            if (tr && !tr.querySelector('.dgv-quote.is-open')) { tr.classList.remove('has-open'); tr.style.removeProperty('--dgv-qh'); }\n          });\n        }\n      });\n    });\n    if (qs.length) {\n      var qOn = function () {\n        if (qTick) return; qTick = true;\n        window.requestAnimationFrame(function () { qTick = false; var w = root.clientWidth; if (w !== qW) { qW = w; qFit(); } });\n      };\n      window.addEventListener('resize', qOn, { passive: true });\n      if (d.fonts && d.fonts.ready) d.fonts.ready.then(function () { qW = -1; qOn(); });\n      qW = root.clientWidth; qFit();\n    }\n    \/* 9. Hablan de nosotros (v11): cinta de logos en movimiento continuo. Sin JS, en el constructor de Divi o con movimiento\n       reducido, los logos quedan quietos y centrados. Aqu\u00ed se duplica la lista (la copia, oculta a lectores de pantalla y sin\n       texto alternativo) para que el bucle no tenga cortes; la velocidad depende del ancho; se pausa al pasar el rat\u00f3n y\n       cuando la cinta est\u00e1 fuera de la pantalla. *\/\n    each(root.querySelectorAll('[data-dgv-press]'), function (mq) {\n      var ul = mq.querySelector('.dgv-press-list');\n      if (RM || !ul || mq.classList.contains('is-mq')) return;\n      var cp = ul.cloneNode(true);\n      cp.setAttribute('aria-hidden', 'true');\n      each(cp.querySelectorAll('img'), function (im) { im.setAttribute('alt', ''); });\n      each(ul.querySelectorAll('img'), function (im) { im.loading = 'eager'; });   \/* que no aparezcan de golpe al entrar en la cinta *\/\n      each(cp.querySelectorAll('img'), function (im) { im.loading = 'eager'; });\n      mq.appendChild(cp);\n      mq.classList.add('is-mq');\n      function speed() { mq.style.setProperty('--dgv-pd', Math.max(22, Math.round(ul.scrollWidth \/ 42)) + 's'); }\n      speed();\n      if ('ResizeObserver' in window) { new ResizeObserver(speed).observe(ul); }\n      if ('IntersectionObserver' in window) {\n        new IntersectionObserver(function (es) { es.forEach(function (e) { mq.classList.toggle('is-off', !e.isIntersecting); }); }).observe(mq);\n      }\n    });\n    \/* 7. Respaldo del formulario de contacto: el bloque no lleva formulario; debajo va la secci\u00f3n de contacto de Divi\n       con el formulario de cada idioma. Si en la p\u00e1gina NO hay ning\u00fan elemento con id=\"contacto\", los enlaces del bloque\n       a #contacto llevan al primer formulario visible que haya despu\u00e9s del bloque, con el mismo margen de cabecera que\n       las secciones (scroll-margin-top de .dgv-sec). Si existe #contacto no se toca nada; si no hay formulario, tampoco. *\/\n    root.addEventListener('click', function (e) {\n      var a = e.target.closest ? e.target.closest('a[href=\"#contacto\"]') : null;\n      if (!a || e.defaultPrevented || e.button || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey) return;\n      if (d.getElementById('contacto')) return;\n      var fs = d.querySelectorAll('form'), f = null;\n      for (var k = 0; k < fs.length && !f; k++) {\n        if (!root.contains(fs[k]) && (root.compareDocumentPosition(fs[k]) & 4) && fs[k].getClientRects().length) f = fs[k];\n      }\n      if (!f) return;\n      e.preventDefault();\n      var sec = root.querySelector('.dgv-sec'), m = sec ? parseFloat(getComputedStyle(sec).scrollMarginTop) : NaN;\n      window.scrollTo({ top: Math.max(0, f.getBoundingClientRect().top + window.pageYOffset - (m >= 0 ? m : 100)), behavior: RM ? 'auto' : 'smooth' });\n      if (e.detail === 0) { \/* activado con teclado: el foco pasa al formulario, como har\u00eda el ancla *\/\n        if (!f.hasAttribute('tabindex')) f.setAttribute('tabindex', '-1');\n        try { f.focus({ preventScroll: true }); } catch (er) { \/* navegadores antiguos: sin foco *\/ }\n      }\n    });\n    \/* 11. Tarjetas clicables en 3D ([data-dgv-3d], v12). Con rat\u00f3n: se inclinan siguiendo al cursor. En pantallas t\u00e1ctiles:\n       la tarjeta que pasa por el centro de la pantalla se enciende (.is-focus) y al tocarla se hunde un poco (CSS :active). *\/\n    var c3 = root.querySelectorAll('[data-dgv-3d]');\n    if (c3.length && !RM) {\n      if (FINE) {\n        each(c3, function (c) {\n          var t = null, ex = 0, ey = 0;\n          var tilt = function () {\n            t = null;\n            var r = c.getBoundingClientRect(), x = (ex - r.left) \/ r.width - 0.5, y = (ey - r.top) \/ r.height - 0.5;\n            c.style.setProperty('--ry', (x * 9).toFixed(2) + 'deg');\n            c.style.setProperty('--rx', (-y * 7).toFixed(2) + 'deg');\n          };\n          c.addEventListener('pointerenter', function (e) { if (e.pointerType === 'mouse') c.classList.add('is-tilt'); });\n          c.addEventListener('pointermove', function (e) {\n            if (e.pointerType !== 'mouse') return;\n            ex = e.clientX; ey = e.clientY; if (!t) t = window.requestAnimationFrame(tilt);\n          }, { passive: true });\n          c.addEventListener('pointerleave', function () {\n            c.classList.remove('is-tilt'); c.style.removeProperty('--rx'); c.style.removeProperty('--ry');\n          });\n        });\n      } else if ('IntersectionObserver' in window) {\n        var io3 = new IntersectionObserver(function (es) {\n          es.forEach(function (e) { e.target.classList.toggle('is-focus', e.isIntersecting); });\n        }, { rootMargin: '-40% 0px -40% 0px' });\n        each(c3, function (c) { io3.observe(c); });\n      }\n    }\n    \/* 13. Ilustraciones en c\u00f3digo (.dgp-ill, v13): se animan solo mientras se ven (sin JS o sin IntersectionObserver, siempre). *\/\n    var ills = root.querySelectorAll('.dgp-ill');\n    if (ills.length) {\n      if ('IntersectionObserver' in window) {\n        var ioI = new IntersectionObserver(function (es) {\n          es.forEach(function (e) { e.target.classList.toggle('is-vis', e.isIntersecting); });\n        }, { rootMargin: '60px 0px 60px 0px' });\n        each(ills, function (el) { ioI.observe(el); });\n      } else { each(ills, function (el) { el.classList.add('is-vis'); }); }\n    }\n  });\n  \/* 12. Cursor de DigiAcci\u00f3n (v12): anillo de degradado que sigue a la flecha con un retraso suave; sobre enlaces y botones\n     crece y brilla, y al pulsar se encoge. Solo con rat\u00f3n y sin movimiento reducido. Una sola vez por p\u00e1gina: si ya lo ha\n     puesto el fragmento global de Divi (window.dgvCursor), no se repite. *\/\n  if (FINE && !RM && !window.dgvCursor) {\n    window.dgvCursor = 1;\n    var cur = d.createElement('div'), cx = -100, cy = -100, tx = -100, ty = -100, raf = 0;\n    cur.className = 'dgv-cur'; cur.setAttribute('aria-hidden', 'true'); b.appendChild(cur);\n    var HOT = 'a,button,[role=\"button\"],[role=\"tab\"],summary,label[for],select,.dgp-strat-row';\n    var loop = function () {\n      cx += (tx - cx) * 0.22; cy += (ty - cy) * 0.22;\n      cur.style.transform = 'translate3d(' + cx.toFixed(1) + 'px,' + cy.toFixed(1) + 'px,0)';\n      raf = (Math.abs(tx - cx) + Math.abs(ty - cy) > 0.2) ? window.requestAnimationFrame(loop) : 0;\n    };\n    d.addEventListener('pointermove', function (e) {\n      if (e.pointerType !== 'mouse') { cur.classList.remove('is-on'); return; }\n      tx = e.clientX; ty = e.clientY;\n      if (!cur.classList.contains('is-on')) { cx = tx; cy = ty; cur.classList.add('is-on'); }\n      var h = e.target && e.target.closest ? e.target.closest(HOT) : null;\n      cur.classList.toggle('is-big', !!h);\n      if (!raf) raf = window.requestAnimationFrame(loop);\n    }, { passive: true });\n    d.addEventListener('pointerdown', function () { cur.classList.add('is-press'); }, { passive: true });\n    d.addEventListener('pointerup', function () { cur.classList.remove('is-press'); }, { passive: true });\n    d.documentElement.addEventListener('mouseleave', function () { cur.classList.remove('is-on'); });\n    window.addEventListener('blur', function () { cur.classList.remove('is-on'); });\n  }\n})();\n\/* DigiAcci\u00f3n | Herramientas gratuitas (ra\u00edz .dgv.dgt): rejilla de s\u00edmbolos, conversor de romaji, valoraci\u00f3n con estrellas,\n   regla a tama\u00f1o real y colores. JS nativo, sin dependencias. Sin JS, todo el contenido se ve (las rejillas, los colores\n   y los textos est\u00e1n en el HTML); el JS a\u00f1ade copiar, buscar, filtrar, convertir y medir. *\/\n(function () {\n  'use strict';\n  var d = document;\n  function go() {\n    var root = d.querySelector('.dgv.dgt');\n    if (!root) return;\n    var b = d.body;\n    if (b && (b.classList.contains('et-fb') || \/[?&](et_fb|et_pb_preview)=\/.test(location.search))) return;\n    \/* Modo claro de entrada (.dgt-claro, solo en las herramientas): en cuanto el visitante usa el interruptor d\u00eda y noche\n       de la web, la herramienta sigue al interruptor como el resto de p\u00e1ginas. No guarda nada ni cambia la web. *\/\n    if (root.classList.contains('dgt-claro') && b && window.MutationObserver) {\n      var lm0 = b.classList.contains('diviui-light-mode');\n      var mo = new MutationObserver(function () { if (b.classList.contains('diviui-light-mode') !== lm0) { root.classList.remove('dgt-claro'); mo.disconnect(); } });\n      mo.observe(b, { attributes: true, attributeFilter: ['class'] });\n    }\n    var LANG = root.getAttribute('lang') || 'es';\n    var NUM = function (n, dec) { try { return n.toLocaleString(LANG === 'es' ? 'es-ES' : 'en-US', { maximumFractionDigits: dec, minimumFractionDigits: 0 }); } catch (e) { return String(Math.round(n * 100) \/ 100); } };\n    var toastEl = root.querySelector('[data-dgt-toast]'), tt = 0;\n    function toast(msg) {\n      if (!toastEl) return;\n      toastEl.textContent = msg; toastEl.classList.add('is-on');\n      clearTimeout(tt); tt = setTimeout(function () { toastEl.classList.remove('is-on'); }, 1600);\n    }\n    function copy(text) {\n      function fb() {\n        var ta = d.createElement('textarea'); ta.value = text; ta.setAttribute('readonly', '');\n        ta.style.cssText = 'position:fixed;top:0;left:0;opacity:0;pointer-events:none';\n        d.body.appendChild(ta); ta.select();\n        try { d.execCommand('copy'); } catch (e) { \/* nada *\/ }\n        d.body.removeChild(ta);\n      }\n      try {\n        if (navigator.clipboard && window.isSecureContext) { return navigator.clipboard.writeText(text).catch(fb); }\n      } catch (e) { \/* nada *\/ }\n      fb(); return Promise.resolve();\n    }\n    function cpStr(hex) { return hex.split('-').map(function (h) { return String.fromCodePoint(parseInt(h, 16)); }).join(''); }\n    function cps(s) { var o = []; for (var ch of s) o.push(ch.codePointAt(0).toString(16).toUpperCase()); return o; }\n    function norm(s) { return (s || '').toLowerCase().normalize('NFD').replace(\/[\u0300-\u036f]\/g, ''); }\n    function esc(s) { return String(s).replace(\/[&<>\"]\/g, function (c) { return { '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;' }[c]; }); }\n    function ui(el) { try { return JSON.parse(el.getAttribute('data-ui') || '{}'); } catch (e) { return {}; } }\n    function pad4(h) { return h.length < 4 ? ('0000' + h).slice(-4) : h; }\n    \/* ---------- Panel de detalle (\u00faltimo elemento copiado) ---------- *\/\n    function detailPanel(tool, U) {\n      var p = tool.querySelector('[data-dgt-detail]');\n      if (!p) return function () {};\n      var fg = p.querySelector('[data-f=\"g\"]'), fn = p.querySelector('[data-f=\"n\"]'), fs = p.querySelector('[data-f=\"s\"]'), ff = p.querySelector('[data-f=\"fmts\"]');\n      p.querySelector('[data-act=\"close-detail\"]').addEventListener('click', function () { p.hidden = true; });\n      d.addEventListener('keydown', function (e) { if (e.key === 'Escape') p.hidden = true; });\n      ff.addEventListener('click', function (e) {\n        var bt = e.target.closest('button[data-v]'); if (!bt) return;\n        copy(bt.getAttribute('data-v')); toast((U.copiado || 'Copied') + ': ' + bt.getAttribute('data-v'));\n      });\n      return function (glyph, name, fmts, color) {\n        fg.textContent = color ? '' : glyph;\n        if (color) fg.style.setProperty('--c', color); else fg.style.removeProperty('--c');\n        fn.textContent = name; fs.textContent = (U.copiado || 'Copied');\n        ff.innerHTML = fmts.filter(function (f) { return f && f[1]; }).map(function (f) {\n          return '<button type=\"button\" data-v=\"' + esc(f[1]) + '\"><b>' + esc(f[0]) + '<\/b><code>' + esc(f[2] || f[1]) + '<\/code><\/button>';\n        }).join('');\n        p.hidden = false;\n      };\n    }\n    \/* ---------- 1. Rejilla de s\u00edmbolos, emojis y kana ---------- *\/\n    Array.prototype.forEach.call(root.querySelectorAll('[data-dgt-grid]'), function (tool) {\n      var U = ui(tool), mode = tool.getAttribute('data-detalle');\n      var items = Array.prototype.slice.call(tool.querySelectorAll('.dgt-i'));\n      var groups = Array.prototype.slice.call(tool.querySelectorAll('.dgt-grp'));\n      var q = tool.querySelector('[data-dgt-q]'), empty = tool.querySelector('[data-dgt-empty]');\n      var tray = tool.querySelector('[data-dgt-tray]'), trayOut = tray && tray.querySelector('.dgt-tray-t');\n      var show = detailPanel(tool, U), tone = '', curG = '*';\n      var idx = items.map(function (el) {\n        var dc = el.getAttribute('data-c'), v = dc ? cpStr(dc) : el.textContent;\n        var g = el.querySelector('.dgt-g'); if (g && dc) g.textContent = v;\n        el._v = v; el._base = v;\n        return { el: el, hay: norm([el.getAttribute('aria-label'), el.getAttribute('data-k'), el.getAttribute('data-r'), v].join(' ')), grp: el.closest('.dgt-grp') };\n      });\n      function trayState() { if (tray) tray.classList.toggle('is-empty', !trayOut.textContent); }\n      trayState();\n      function withTone(v) {\n        if (!tone) return v;\n        var arr = Array.from(v.replace(\/\ufe0f\/g, ''));\n        arr.splice(1, 0, String.fromCodePoint(parseInt(tone, 16)));\n        return arr.join('');\n      }\n      function filter() {\n        var s = norm(q ? q.value.trim() : ''), any = false;\n        var terms = s ? s.split(\/\\s+\/) : [];\n        idx.forEach(function (o) {\n          var okG = curG === '*' || o.grp.getAttribute('data-g') === curG;\n          var okQ = !terms.length || terms.every(function (t) { return o.hay.indexOf(t) > -1; });\n          o.el.hidden = !(okG && okQ);\n        });\n        groups.forEach(function (g) {\n          var vis = false;\n          Array.prototype.forEach.call(g.querySelectorAll('.dgt-grid'), function (gr) {\n            var has = !!gr.querySelector('.dgt-i:not([hidden])');\n            gr.hidden = !has;\n            var prev = gr.previousElementSibling;\n            if (prev && prev.classList.contains('dgt-sh')) prev.hidden = !has;\n            vis = vis || has;\n          });\n          g.hidden = !vis; any = any || vis;\n        });\n        if (empty) empty.hidden = any;\n      }\n      var tq = 0;\n      if (q) q.addEventListener('input', function () { clearTimeout(tq); tq = setTimeout(filter, 110); });\n      Array.prototype.forEach.call(tool.querySelectorAll('.dgt-chips button'), function (bt, i, all) {\n        bt.addEventListener('click', function () {\n          Array.prototype.forEach.call(all, function (x) { x.classList.toggle('is-on', x === bt); });\n          curG = bt.getAttribute('data-g'); filter();\n          if (curG !== '*') { var t = tool.querySelector('.dgt-grp[data-g=\"' + curG + '\"]'); if (t && t.getBoundingClientRect().top < 0) t.scrollIntoView({ behavior: 'smooth', block: 'start' }); }\n        });\n      });\n      Array.prototype.forEach.call(tool.querySelectorAll('.dgt-tones button'), function (bt, i, all) {\n        bt.addEventListener('click', function () {\n          Array.prototype.forEach.call(all, function (x) { x.setAttribute('aria-checked', x === bt ? 'true' : 'false'); });\n          tone = bt.getAttribute('data-tone') || '';\n          idx.forEach(function (o) {\n            if (!o.el.hasAttribute('data-t')) return;\n            o.el._v = withTone(o.el._base);\n            var g = o.el.querySelector('.dgt-g') || o.el; g.textContent = o.el._v;\n          });\n        });\n      });\n      tool.addEventListener('click', function (e) {\n        var el = e.target.closest('.dgt-i'); if (!el) return;\n        var v = el._v || el.textContent;\n        copy(v);\n        el.classList.add('is-copied'); setTimeout(function () { el.classList.remove('is-copied'); }, 1200);\n        if (trayOut) { trayOut.textContent += v; trayState(); }\n        toast((U.copiado || 'Copied') + ': ' + v);\n        var c = cps(v), uni = c.map(function (h) { return 'U+' + pad4(h); }).join(' ');\n        var ent = el.getAttribute('data-e'), num = c.map(function (h) { return '&#x' + h + ';'; }).join('');\n        var css = c.map(function (h) { return '\\\\' + pad4(h); }).join(' ');\n        var js = c.map(function (h) { return h.length > 4 ? '\\\\u{' + h + '}' : '\\\\u' + pad4(h); }).join('');\n        var alt = el.getAttribute('data-a'), altS = '';\n        if (alt) altS = alt.split('|').map(function (a) { return 'Alt+' + a; }).join(' \/ ');\n        var f = [[U.f_simbolo || 'Symbol', v]];\n        if (mode === 'kana') f.push(['Romaji', el.getAttribute('data-r') || '']);\n        f.push(['Unicode', uni]);\n        if (ent) f.push(['HTML', '&' + ent + ';']);\n        f.push([ent ? 'HTML (n.)' : 'HTML', num]);\n        f.push(['CSS', css]);\n        f.push(['JavaScript', js]);\n        if (mode === 'simbolo') { try { f.push(['URL', encodeURIComponent(v)]); } catch (x) { \/* nada *\/ } }\n        if (altS) f.push(['Windows', altS.split(' \/ ').pop(), altS]);\n        show(v, el.getAttribute('aria-label') || '', f);\n      });\n      if (tray) tray.addEventListener('click', function (e) {\n        var a = e.target.closest('[data-act]'); if (!a) return;\n        if (a.getAttribute('data-act') === 'copy-tray' && trayOut.textContent) { copy(trayOut.textContent); toast((U.copiado || 'Copied') + ': ' + trayOut.textContent); }\n        if (a.getAttribute('data-act') === 'clear-tray') { trayOut.textContent = ''; trayState(); }\n      });\n      \/* Conversor de romaji a hiragana y katakana *\/\n      var rin = tool.querySelector('[data-dgt-rin]');\n      if (rin) {\n        var T = {}, base = {\n          a: '\u3042', i: '\u3044', u: '\u3046', e: '\u3048', o: '\u304a', ka: '\u304b', ki: '\u304d', ku: '\u304f', ke: '\u3051', ko: '\u3053', sa: '\u3055', si: '\u3057', shi: '\u3057', su: '\u3059', se: '\u305b', so: '\u305d',\n          ta: '\u305f', ti: '\u3061', chi: '\u3061', tu: '\u3064', tsu: '\u3064', te: '\u3066', to: '\u3068', na: '\u306a', ni: '\u306b', nu: '\u306c', ne: '\u306d', no: '\u306e',\n          ha: '\u306f', hi: '\u3072', hu: '\u3075', fu: '\u3075', he: '\u3078', ho: '\u307b', ma: '\u307e', mi: '\u307f', mu: '\u3080', me: '\u3081', mo: '\u3082', ya: '\u3084', yu: '\u3086', yo: '\u3088',\n          ra: '\u3089', ri: '\u308a', ru: '\u308b', re: '\u308c', ro: '\u308d', la: '\u3089', li: '\u308a', lu: '\u308b', le: '\u308c', lo: '\u308d', wa: '\u308f', wo: '\u3092',\n          ga: '\u304c', gi: '\u304e', gu: '\u3050', ge: '\u3052', go: '\u3054', za: '\u3056', zi: '\u3058', ji: '\u3058', zu: '\u305a', ze: '\u305c', zo: '\u305e', da: '\u3060', di: '\u3062', du: '\u3065', de: '\u3067', do: '\u3069',\n          ba: '\u3070', bi: '\u3073', bu: '\u3076', be: '\u3079', bo: '\u307c', pa: '\u3071', pi: '\u3074', pu: '\u3077', pe: '\u307a', po: '\u307d', vu: '\u3094',\n          kya: '\u304d\u3083', kyu: '\u304d\u3085', kyo: '\u304d\u3087', sha: '\u3057\u3083', shu: '\u3057\u3085', sho: '\u3057\u3087', sya: '\u3057\u3083', syu: '\u3057\u3085', syo: '\u3057\u3087', cha: '\u3061\u3083', chu: '\u3061\u3085', cho: '\u3061\u3087',\n          tya: '\u3061\u3083', tyu: '\u3061\u3085', tyo: '\u3061\u3087', nya: '\u306b\u3083', nyu: '\u306b\u3085', nyo: '\u306b\u3087', hya: '\u3072\u3083', hyu: '\u3072\u3085', hyo: '\u3072\u3087', mya: '\u307f\u3083', myu: '\u307f\u3085', myo: '\u307f\u3087',\n          rya: '\u308a\u3083', ryu: '\u308a\u3085', ryo: '\u308a\u3087', gya: '\u304e\u3083', gyu: '\u304e\u3085', gyo: '\u304e\u3087', ja: '\u3058\u3083', ju: '\u3058\u3085', jo: '\u3058\u3087', jya: '\u3058\u3083', jyu: '\u3058\u3085', jyo: '\u3058\u3087',\n          bya: '\u3073\u3083', byu: '\u3073\u3085', byo: '\u3073\u3087', pya: '\u3074\u3083', pyu: '\u3074\u3085', pyo: '\u3074\u3087',\n          fa: '\u3075\u3041', fi: '\u3075\u3043', fe: '\u3075\u3047', fo: '\u3075\u3049', she: '\u3057\u3047', je: '\u3058\u3047', che: '\u3061\u3047', thi: '\u3066\u3043', dhi: '\u3067\u3043', twu: '\u3068\u3045', dwu: '\u3069\u3045',\n          wi: '\u3046\u3043', we: '\u3046\u3047', va: '\u3094\u3041', vi: '\u3094\u3043', ve: '\u3094\u3047', vo: '\u3094\u3049', tsa: '\u3064\u3041', ye: '\u3044\u3047',\n          xa: '\u3041', xi: '\u3043', xu: '\u3045', xe: '\u3047', xo: '\u3049', xtu: '\u3063', xtsu: '\u3063', xya: '\u3083', xyu: '\u3085', xyo: '\u3087', '-': '\u30fc'\n        };\n        for (var k in base) T[k] = base[k];\n        var toKata = function (s) { return s.replace(\/[\u3041-\u3096]\/g, function (c) { return String.fromCharCode(c.charCodeAt(0) + 0x60); }); };\n        \/* Vocales largas (\u014d, \u00f4...): en hiragana se escriben con vocal (ou, aa, ii, uu, ee) y en katakana con la raya \u30fc.\n           Las tildes del espa\u00f1ol se quitan (\u00e1 > a) y la \u00f1 pasa a ny. *\/\n        var LV = { '\u0101': 'a', '\u00e2': 'a', '\u012b': 'i', '\u00ee': 'i', '\u016b': 'u', '\u00fb': 'u', '\u0113': 'e', '\u00ea': 'e', '\u014d': 'o', '\u00f4': 'o' }, HL = { a: 'a', i: 'i', u: 'u', e: 'e', o: 'u' };\n        var prep = function (src, kata) {\n          return src.toLowerCase().replace(\/[\u0101\u00e2\u012b\u00ee\u016b\u00fb\u0113\u00ea\u014d\u00f4]\/g, function (c) { var v = LV[c]; return v + (kata ? '-' : HL[v]); })\n            .replace(\/\u00f1\/g, 'ny').replace(\/[\u00e0-\u00ff]\/g, function (c) { return c.normalize ? c.normalize('NFD').charAt(0) : c; });\n        };\n        var conv = function (src) {\n          var s = src, out = '', i = 0;\n          while (i < s.length) {\n            var ch = s[i], nx = s[i + 1];\n            if (ch === 'n') {\n              if (nx === \"'\") { out += '\u3093'; i += 2; continue; }\n              if (nx === 'n') { out += '\u3093'; i += \/[aeiouy]\/.test(s[i + 2] || '') ? 1 : 2; continue; }\n              if (!nx || !\/[aeiouy]\/.test(nx)) { out += '\u3093'; i++; continue; }\n            }\n            if (nx && ch === nx && \/[bcdfghjklmpqrstvwxz]\/.test(ch) && ch !== 'n') { out += '\u3063'; i++; continue; }\n            if (ch === 't' && nx === 'c' && s[i + 2] === 'h') { out += '\u3063'; i++; continue; }\n            var hit = false;\n            for (var L = 4; L > 0; L--) { var part = s.substr(i, L); if (T[part]) { out += T[part]; i += L; hit = true; break; } }\n            if (!hit) { out += src[i]; i++; }\n          }\n          return out;\n        };\n        var rh = tool.querySelector('[data-dgt-rh]'), rk = tool.querySelector('[data-dgt-rk]');\n        var upd = function () { rh.textContent = conv(prep(rin.value, false)); rk.textContent = toKata(conv(prep(rin.value, true))); };\n        rin.addEventListener('input', upd);\n        if (!rin.value) rin.value = rin.getAttribute('placeholder') || ''; upd(); rin.value = '';\n      }\n      \/* Generador de valoraci\u00f3n con estrellas *\/\n      var rn = tool.querySelector('[data-dgt-rn]');\n      if (rn) {\n        var rmax = tool.querySelector('[data-dgt-rmax]'), rst = tool.querySelector('[data-dgt-rst]'), rout = tool.querySelector('[data-dgt-rout]');\n        var rv = tool.querySelector('[data-dgt-rv]'), half = rn.getAttribute('data-half');\n        var rate = function () {\n          var mx = parseInt(rmax.value, 10); rn.max = mx; if (+rn.value > mx) rn.value = mx;\n          var st = rst.value.split(','), full = cpStr(st[0]), emp = cpStr(st[1]);\n          var canHalf = !!half && st[0] === '2605';          \/* la media estrella solo existe para \u2605 \u2606 *\/\n          var v = parseFloat(rn.value); if (!canHalf) v = Math.floor(v);\n          rn.step = canHalf ? '0.5' : '1'; rn.value = v;\n          var n = Math.floor(v), h = canHalf && v - n >= 0.5 ? 1 : 0;\n          rout.textContent = new Array(n + 1).join(full) + (h ? cpStr(half) : '') + new Array(mx - n - h + 1).join(emp);\n          if (rv) rv.textContent = NUM(v, 1) + ' \/ ' + mx;\n        };\n        [rn, rmax, rst].forEach(function (x) { x.addEventListener('input', rate); x.addEventListener('change', rate); });\n        rate();\n      }\n      \/* Pesta\u00f1as del conversor de japon\u00e9s: nombre o palabra \/ desde romaji *\/\n      var jtabs = tool.querySelectorAll('[data-jm]');\n      Array.prototype.forEach.call(jtabs, function (bt) {\n        bt.addEventListener('click', function () {\n          Array.prototype.forEach.call(jtabs, function (x) { var on = x === bt; x.setAttribute('aria-selected', on ? 'true' : 'false'); x.tabIndex = on ? 0 : -1; });\n          Array.prototype.forEach.call(tool.querySelectorAll('[data-jp]'), function (pn) { pn.hidden = pn.getAttribute('data-jp') !== bt.getAttribute('data-jm'); });\n        });\n        bt.addEventListener('keydown', function (e) {\n          if (e.key !== 'ArrowRight' && e.key !== 'ArrowLeft') return;\n          var arr = Array.prototype.slice.call(jtabs), i = arr.indexOf(bt), nx = arr[(i + (e.key === 'ArrowRight' ? 1 : arr.length - 1)) % arr.length];\n          nx.focus(); nx.click(); e.preventDefault();\n        });\n      });\n      \/* Tu nombre en japon\u00e9s: katakana por c\u00f3mo suena (espa\u00f1ol; en la p\u00e1gina inglesa, con algunas reglas del ingl\u00e9s),\n         diccionario de nombres con su graf\u00eda habitual y traducci\u00f3n de palabras y frases comunes *\/\n      var nin = tool.querySelector('[data-dgt-nin]'), jd = tool.querySelector('[data-dgt-jdict]');\n      if (nin && jd) {\n        var J = {}; try { J = JSON.parse(jd.textContent); } catch (x) { J = { n: { es: {}, en: {} }, d: { es: {}, en: {} } }; }\n        var OTHER = LANG === 'es' ? 'en' : 'es';\n        var KV = {\n          '': ['\u30a2', '\u30a4', '\u30a6', '\u30a8', '\u30aa'], k: ['\u30ab', '\u30ad', '\u30af', '\u30b1', '\u30b3'], g: ['\u30ac', '\u30ae', '\u30b0', '\u30b2', '\u30b4'], s: ['\u30b5', '\u30b7', '\u30b9', '\u30bb', '\u30bd'],\n          z: ['\u30b6', '\u30b8', '\u30ba', '\u30bc', '\u30be'], t: ['\u30bf', '\u30c6\u30a3', '\u30c8\u30a5', '\u30c6', '\u30c8'], d: ['\u30c0', '\u30c7\u30a3', '\u30c9\u30a5', '\u30c7', '\u30c9'], n: ['\u30ca', '\u30cb', '\u30cc', '\u30cd', '\u30ce'],\n          h: ['\u30cf', '\u30d2', '\u30d5', '\u30d8', '\u30db'], b: ['\u30d0', '\u30d3', '\u30d6', '\u30d9', '\u30dc'], p: ['\u30d1', '\u30d4', '\u30d7', '\u30da', '\u30dd'], m: ['\u30de', '\u30df', '\u30e0', '\u30e1', '\u30e2'],\n          y: ['\u30e4', '\u30a4', '\u30e6', '\u30a4\u30a7', '\u30e8'], r: ['\u30e9', '\u30ea', '\u30eb', '\u30ec', '\u30ed'], w: ['\u30ef', '\u30a6\u30a3', '\u30a6', '\u30a6\u30a7', '\u30a6\u30a9'], f: ['\u30d5\u30a1', '\u30d5\u30a3', '\u30d5', '\u30d5\u30a7', '\u30d5\u30a9'],\n          ch: ['\u30c1\u30e3', '\u30c1', '\u30c1\u30e5', '\u30c1\u30a7', '\u30c1\u30e7'], ny: ['\u30cb\u30e3', '\u30cb', '\u30cb\u30e5', '\u30cb\u30a7', '\u30cb\u30e7'], sh: ['\u30b7\u30e3', '\u30b7', '\u30b7\u30e5', '\u30b7\u30a7', '\u30b7\u30e7'],\n          gw: ['\u30b0\u30a1', '\u30b0\u30a3', '\u30b0', '\u30b0\u30a7', '\u30b0\u30a9'], j: ['\u30b8\u30e3', '\u30b8', '\u30b8\u30e5', '\u30b8\u30a7', '\u30b8\u30e7'], kw: ['\u30af\u30a1', '\u30af\u30a3', '\u30af', '\u30af\u30a7', '\u30af\u30a9']\n        };\n        var CODA = { k: '\u30af', g: '\u30b0', s: '\u30b9', z: '\u30ba', t: '\u30c8', d: '\u30c9', h: '\u30d5', b: '\u30d6', p: '\u30d7', m: '\u30e0', r: '\u30eb', f: '\u30d5', ch: '\u30c1', sh: '\u30b7\u30e5', j: '\u30b8', w: '\u30a6', y: '\u30a4', ny: '\u30cb', gw: '\u30b0', kw: '\u30af' };\n        var VI = { a: 0, i: 1, u: 2, e: 3, o: 4 };\n        var isV = function (ch) { return !!ch && VI.hasOwnProperty(ch); };\n        var clean = function (w) {\n          return w.toLowerCase().replace(\/l\u00b7l\/g, 'l').replace(\/[\u00e1\u00e0\u00e2\u00e4]\/g, 'a').replace(\/[\u00e9\u00e8\u00ea\u00eb]\/g, 'e').replace(\/[\u00ed\u00ec\u00ee\u00ef]\/g, 'i').replace(\/[\u00f3\u00f2\u00f4\u00f6]\/g, 'o')\n            .replace(\/[\u00fa\u00f9\u00fb]\/g, 'u').replace(\/\u00e7\/g, 's').replace(\/[^a-z\u00f1\u00fc]\/g, '');\n        };\n        var phon = function (w, EN) {\n          if (EN) {   \/* algunas reglas del ingl\u00e9s: vocales largas, e final muda y j *\/\n            w = w.replace(\/ee|ea\/g, '\u012b').replace(\/oo\/g, '\u016b').replace(\/ph\/g, 'f').replace(\/ck\/g, 'kk').replace(\/wh\/g, 'w');\n            if (w.length > 3 && \/[^aeiouy]e$\/.test(w)) w = w.slice(0, -1);\n            w = w.replace(\/y$\/, '\u012b');\n          }\n          var out = '', i = 0, L = w.length;\n          while (i < L) {\n            var ch = w[i], nx = w[i + 1], c = null, adv = 1;\n            if (ch === '\u012b') { out += '\u30a4\u30fc'; i++; continue; }\n            if (ch === '\u016b') { out += '\u30a6\u30fc'; i++; continue; }\n            if (isV(ch)) { out += KV[''][VI[ch]]; i++; continue; }\n            if (ch === '\u00fc') { out += '\u30a6'; i++; continue; }\n            var two = w.substr(i, 2);\n            if (two === 'ch') { c = 'ch'; adv = 2; }\n            else if (two === 'll') { c = EN ? 'r' : 'y'; adv = 2; }\n            else if (two === 'rr') { c = 'r'; adv = 2; }\n            else if (two === 'sh') { c = 'sh'; adv = 2; }\n            else if (two === 'th') { c = EN ? 's' : 't'; adv = 2; }\n            else if (two === 'tx') { c = 'ch'; adv = 2; }\n            else if (two === 'qu') { if (\/[ei]\/.test(w[i + 2] || '')) { c = 'k'; adv = 2; } else { c = 'kw'; adv = 2; } }\n            else if (two === 'gu' && \/[ei]\/.test(w[i + 2] || '')) { c = 'g'; adv = 2; }\n            else if (two === 'g\u00fc') { c = 'gw'; adv = 2; }\n            else if (\/^(mm|bb|dd|gg|ff|zz|nn)$\/.test(two) && !(two === 'nn' && isV(w[i + 2]))) { i++; continue; }\n            else if (\/^(tt|ss|pp|kk|cc)$\/.test(two) && isV(w[i + 2]) && !(two === 'cc' && \/[eiy]\/.test(w[i + 2]))) { out += '\u30c3'; i++; continue; }\n            if (!c) {\n              switch (ch) {\n                case 'c': c = \/[eiy]\/.test(nx || '') ? 's' : 'k'; break;\n                case 'g': c = \/[eiy]\/.test(nx || '') ? (EN ? 'j' : 'h') : 'g'; break;\n                case 'j': c = EN ? 'j' : 'h'; break;\n                case 'z': c = EN ? 'z' : 's'; break;\n                case 'v': c = 'b'; break;\n                case 'q': c = 'k'; break;\n                case 'h': if (EN && isV(nx)) { c = 'h'; break; } i++; continue;\n                case '\u00f1': c = 'ny'; break;\n                case 'x': if (isV(nx)) { out += '\u30af'; c = 's'; } else { out += '\u30af\u30b9'; i++; continue; } break;\n                case 'y': if (isV(nx)) { c = 'y'; } else { out += EN && i === L - 1 ? '\u30a4\u30fc' : '\u30a4'; i++; continue; } break;\n                default: c = ch;\n              }\n            }\n            if (c === 'l') c = 'r';\n            var v = w[i + adv];\n            if (v === '\u012b' || v === '\u016b') { out += KV[c] ? KV[c][v === '\u012b' ? 1 : 2] + '\u30fc' : ''; i += adv + 1; continue; }\n            if (isV(v) && KV[c]) {\n              out += (c === 'y' && v === 'i') ? '\u30a4' : (c === 'w' && v === 'u') ? '\u30a6' : KV[c][VI[v]];\n              i += adv + 1; continue;\n            }\n            if (c === 'n') out += '\u30f3';\n            else if (c === 'm' && \/[bp]\/.test(w[i + adv] || '')) out += '\u30f3';\n            else if (c === 'l') out += '\u30eb';\n            else out += CODA[c] || '';\n            i += adv;\n          }\n          return out;\n        };\n        var ROM = {};   \/* lectura en romaji de lo que sale en katakana *\/\n        Object.keys(KV).forEach(function (cl) {\n          var base = { '': ['a', 'i', 'u', 'e', 'o'], k: ['ka', 'ki', 'ku', 'ke', 'ko'], g: ['ga', 'gi', 'gu', 'ge', 'go'], s: ['sa', 'shi', 'su', 'se', 'so'], z: ['za', 'ji', 'zu', 'ze', 'zo'], t: ['ta', 'ti', 'tu', 'te', 'to'], d: ['da', 'di', 'du', 'de', 'do'], n: ['na', 'ni', 'nu', 'ne', 'no'], h: ['ha', 'hi', 'fu', 'he', 'ho'], b: ['ba', 'bi', 'bu', 'be', 'bo'], p: ['pa', 'pi', 'pu', 'pe', 'po'], m: ['ma', 'mi', 'mu', 'me', 'mo'], y: ['ya', 'i', 'yu', 'ye', 'yo'], r: ['ra', 'ri', 'ru', 're', 'ro'], w: ['wa', 'wi', 'u', 'we', 'wo'], f: ['fa', 'fi', 'fu', 'fe', 'fo'], ch: ['cha', 'chi', 'chu', 'che', 'cho'], ny: ['nya', 'ni', 'nyu', 'nye', 'nyo'], sh: ['sha', 'shi', 'shu', 'she', 'sho'], gw: ['gwa', 'gwi', 'gu', 'gwe', 'gwo'], j: ['ja', 'ji', 'ju', 'je', 'jo'], kw: ['kwa', 'kwi', 'ku', 'kwe', 'kwo'] }[cl];\n          KV[cl].forEach(function (kk, ix) { if (!ROM[kk]) ROM[kk] = base[ix]; });\n        });\n        '\u30c4:tsu,\u30c5:zu,\u30c2:ji,\u30f2:wo,\u30f4:vu,\u30f3:n,\u30fc:-,\u30b8:ji,\u30c1:chi,\u30b7:shi,\u30d5:fu,\u30be:zo,\u30ba:zu'.split(',').forEach(function (p) { var q = p.split(':'); ROM[q[0]] = q[1]; });\n        var reading = function (k) {\n          var o = '', i = 0;\n          while (i < k.length) {\n            var two = k.substr(i, 2), one = k[i];\n            if (one === '\u30c3') { var nxr = ROM[k.substr(i + 1, 2)] || ROM[k[i + 1]] || ''; o += nxr.charAt(0); i++; continue; }\n            if (one === '\u30fb') { o += ' '; i++; continue; }\n            if (one === '\u30fc') { var lv = o.slice(-1); o += \/[aeiou]\/.test(lv) ? lv : ''; i++; continue; }\n            if (ROM[two]) { o += ROM[two]; i += 2; continue; }\n            o += ROM[one] || one; i++;\n          }\n          return o;\n        };\n        var nk = tool.querySelector('[data-dgt-nk]'), ntr = tool.querySelector('[data-dgt-ntr]'), nt = tool.querySelector('[data-dgt-nt]');\n        var nl = tool.querySelector('[data-dgt-nl]'), nm = tool.querySelector('[data-dgt-nm]');\n        var key = function (s) { return norm(s).replace(\/[\u00bf?\u00a1!.,;:'\u2019\"]\/g, '').replace(\/\\s+\/g, ' ').trim(); };\n        var nupd = function () {\n          var raw = nin.value.trim() || nin.getAttribute('placeholder') || '';\n          var words = raw.split(\/[\\s\\-]+\/).filter(Boolean), dic = true;\n          var kat = words.map(function (wd) {\n            var w = clean(wd); if (!w) return '';\n            var k = (J.n[LANG] || {})[w] || (J.n[OTHER] || {})[w];\n            if (k) return k;\n            dic = false; return phon(w, LANG === 'en' && !\/[\u00e1\u00e9\u00ed\u00f3\u00fa\u00f1\u00fc]\/i.test(wd));   \/* con tilde o \u00f1, se lee en espa\u00f1ol *\/\n          }).filter(Boolean).join('\u30fb');\n          nk.textContent = kat;\n          nl.textContent = reading(kat);\n          var hit = (J.d[LANG] || {})[key(raw)] || (J.d[OTHER] || {})[key(raw)];\n          if (hit && hit.length) {\n            ntr.hidden = false; nt.textContent = hit[0][0];\n            nm.textContent = hit.map(function (h) { return h[0] + ' (' + h[1] + '): ' + h[2]; }).join('. ');\n          } else {\n            ntr.hidden = true; nt.textContent = '';\n            nm.textContent = (dic ? (U.jn_dic || '') : (U.jn_aprox || ''));\n          }\n        };\n        var nt0 = 0; nin.addEventListener('input', function () { clearTimeout(nt0); nt0 = setTimeout(nupd, 60); });\n        nupd();\n      }\n      \/* Conversor de comillas: rectas a latinas \u00ab \u00bb (orden de la RAE: \u00ab \u201c \u2018 \u2019 \u201d \u00bb) o inglesas \u201c \u201d (\u201c \u2018 \u2019 \u201d) *\/\n      var qin = tool.querySelector('[data-qc-in]');\n      if (qin) {\n        var qout = tool.querySelector('[data-dgt-qcout]'), qap = tool.querySelector('[data-qc-ap]'), qs0 = tool.querySelector('[data-qs][aria-checked=\"true\"]'), qstyle = qs0 ? qs0.getAttribute('data-qs') : 'lat';\n        var LEV = { lat: [['\u00ab', '\u00bb'], ['\u201c', '\u201d'], ['\u2018', '\u2019']], ing: [['\u201c', '\u201d'], ['\u2018', '\u2019'], ['\u201c', '\u201d']] };\n        var DQ = '\"\u00ab\u00bb\u201c\u201d\u201e\u201f\u275d\u275e', SQ = \"'\u2018\u2019\u201a\u201b\";\n        var isL = function (ch) { return !!ch && \/[0-9A-Za-z\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u00ff\u0100-\u017e]\/.test(ch); };\n        var qconv = function (t, st, ap) {\n          if (st === 'rect') return t.replace(\/[\u00ab\u00bb\u201c\u201d\u201e\u201f\u275d\u275e]\/g, '\"').replace(\/[\u2018\u2019\u201a\u201b]\/g, \"'\");\n          var out = '', stack = [], lastQ = null;   \/* lastQ: si el car\u00e1cter anterior era una comilla, si abr\u00eda (true) o cerraba (false) *\/\n          for (var i = 0; i < t.length; i++) {\n            var ch = t[i], pv = t[i - 1], nx = t[i + 1];\n            var dq = DQ.indexOf(ch) > -1, sq = SQ.indexOf(ch) > -1;\n            if (!dq && !sq) { out += ch; lastQ = null; continue; }\n            if ((ch === \"'\" || ch === '\"') && \/[0-9]\/.test(pv || '') && !\/[A-Za-z\u00c0-\u00d6\u00d8-\u00f6\u00f8-\u00ff]\/.test(nx || '') && !stack.some(function (x) { return x.t === (dq ? 'd' : 's'); })) {\n              out += dq ? '\u2033' : '\u2032'; lastQ = null; continue;                                          \/* medidas tras un n\u00famero: 5' 11\" a primas 5\u2032 11\u2033 *\/\n            }\n            if (sq && isL(pv) && isL(nx)) { out += ap ? '\u2019' : ch; lastQ = null; continue; }         \/* ap\u00f3strofo entre letras: it's, l'amour *\/\n            if (sq && isL(pv) && !stack.some(function (x) { return x.t === 's'; })) { out += ap ? '\u2019' : ch; lastQ = null; continue; }  \/* ap\u00f3strofo final *\/\n            var opening = ch === '\u00ab' || ch === '\u201c' || ch === '\u2018' || ch === '\u201e' || ch === '\u201a' ? true : ch === '\u00bb' || ch === '\u201d' || ch === '\u2019' ? false\n              : lastQ !== null ? lastQ : (!pv || \/[\\s(\\[{\u00bf\u00a1\u2014\u2013\\-\\\/:]\/.test(pv));\n            var type = dq ? 'd' : 's';\n            if (!opening && stack.length) {\n              var top = stack[stack.length - 1];\n              if (top.t !== type) { var j = stack.length - 1; while (j >= 0 && stack[j].t !== type) j--; if (j >= 0) { while (stack.length > j + 1) { stack.pop(); } } }\n            }\n            if (opening) { var lv = Math.min(stack.length, 2); stack.push({ t: type, l: lv }); out += LEV[st][lv][0]; }\n            else if (stack.length) { var o = stack.pop(); out += LEV[st][o.l][1]; }\n            else { out += LEV[st][0][1]; }\n            lastQ = opening;\n          }\n          return out;\n        };\n        var qupd = function () { qout.textContent = qconv(qin.value || qin.getAttribute('placeholder') || '', qstyle, !qap || qap.checked); };\n        qin.addEventListener('input', qupd); if (qap) qap.addEventListener('change', qupd);\n        Array.prototype.forEach.call(tool.querySelectorAll('[data-qs]'), function (bt, i, all) {\n          bt.addEventListener('click', function () { qstyle = bt.getAttribute('data-qs'); Array.prototype.forEach.call(all, function (x) { x.setAttribute('aria-checked', x === bt ? 'true' : 'false'); }); qupd(); });\n        });\n        qupd();\n      }\n      tool.addEventListener('click', function (e) {\n        var a = e.target.closest('[data-act=\"copy-out\"]'); if (!a) return;\n        var o = tool.querySelector('[data-dgt-' + a.getAttribute('data-src') + ']');\n        if (o && o.textContent) { copy(o.textContent); toast((U.copiado || 'Copied') + ': ' + o.textContent); }\n      });\n    });\n    \/* ---------- 2. Regla a tama\u00f1o real ---------- *\/\n    Array.prototype.forEach.call(root.querySelectorAll('[data-dgt-ruler]'), function (tool) {\n      var U = ui(tool), KEY = 'dgt-ppm', DEF = 96 \/ 25.4;\n      var box = tool.querySelector('[data-dgt-rbox]'), cv = tool.querySelector('[data-dgt-canvas]'), mark = tool.querySelector('[data-dgt-mark]');\n      var read = tool.querySelector('[data-dgt-read]'), state = tool.querySelector('[data-dgt-state]'), cal = tool.querySelector('[data-dgt-cal]');\n      var slider = tool.querySelector('[data-dgt-ppm]'), card = tool.querySelector('[data-dgt-card]'), diag = tool.querySelector('[data-dgt-diag]');\n      var unit = tool.getAttribute('data-unit') || 'cm', X0 = 16, pos = 0, saved = null;\n      try { saved = parseFloat(localStorage.getItem(KEY)); } catch (e) { saved = null; }\n      var ppm = saved && saved > 1 && saved < 20 ? saved : DEF;\n      function setState() {\n        var eq = NUM(unit === 'in' ? ppm * 25.4 : ppm * 10, 1);\n        state.innerHTML = saved ? '<b>' + esc(U.calibrada || '') + '<\/b> ' + esc((U.equiv || '1 {u} = {px} px').replace('{u}', unit === 'in' ? 'in' : 'cm').replace('{px}', eq)) : esc(U.sin_calibrar || '');\n      }\n      function fracIn(inches) {\n        var whole = Math.floor(inches), rest = Math.round((inches - whole) * 16), den = 16;\n        if (rest === 16) { whole++; rest = 0; }\n        while (rest && rest % 2 === 0) { rest \/= 2; den \/= 2; }\n        return (whole || !rest ? whole : '') + (rest ? (whole ? ' ' : '') + rest + '\/' + den : '') + ' in';\n      }\n      function readout() {\n        var mm = Math.max(0, pos) \/ ppm;\n        if (unit === 'cm') read.textContent = NUM(mm \/ 10, 2) + ' cm (' + NUM(mm, 1) + ' mm)';\n        else { var fr = fracIn(mm \/ 25.4); read.textContent = fr.indexOf('\/') > -1 ? fr + ' (' + NUM(mm \/ 25.4, 2) + ' in)' : fr; }\n        mark.setAttribute('aria-valuenow', String(Math.round(mm * 10) \/ 10)); mark.setAttribute('aria-valuetext', read.textContent);\n      }\n      function draw() {\n        var w = box.clientWidth, h = box.clientHeight, dpr = window.devicePixelRatio || 1;\n        cv.width = Math.round(w * dpr); cv.height = Math.round(h * dpr);\n        var c = cv.getContext('2d'); c.setTransform(dpr, 0, 0, dpr, 0, 0); c.clearRect(0, 0, w, h);\n        c.strokeStyle = '#16161d'; c.fillStyle = '#16161d'; c.lineWidth = 1; c.textBaseline = 'top';\n        var font = '600 13px Inter Tight, system-ui, sans-serif', small = '500 11px Inter Tight, system-ui, sans-serif';\n        function line(x, y1, y2) { var xx = Math.round(x) + 0.5; c.beginPath(); c.moveTo(xx, y1); c.lineTo(xx, y2); c.stroke(); }\n        var primary = unit, secondary = unit === 'cm' ? 'in' : 'cm';\n        [[primary, 0, 1], [secondary, h, -1]].forEach(function (cfg) {\n          var u = cfg[0], y0 = cfg[1], dir = cfg[2], isP = u === primary;\n          var sc = isP ? 1 : 0.62;\n          if (u === 'cm') {\n            for (var mm = 0; X0 + mm * ppm <= w; mm++) {\n              var x = X0 + mm * ppm, len = mm % 10 === 0 ? 40 : (mm % 5 === 0 ? 26 : 15);\n              line(x, y0, y0 + dir * len * sc);\n              if (mm % 10 === 0 && x < w - 40) { c.font = isP ? font : small; var t = String(mm \/ 10); var tw = c.measureText(t).width; c.fillText(t, mm === 0 ? x + 3 : x - tw \/ 2, dir > 0 ? y0 + 44 * sc : y0 - 44 * sc - 12); }\n            }\n            c.font = small; c.fillText('cm', w - 26, dir > 0 ? y0 + 46 * sc + (isP ? 0 : 0) : y0 - 46 * sc - 12);\n          } else {\n            var ppi = ppm * 25.4;\n            for (var s = 0; X0 + s * ppi \/ 16 <= w; s++) {\n              var xi = X0 + s * ppi \/ 16, L = s % 16 === 0 ? 40 : (s % 8 === 0 ? 30 : (s % 4 === 0 ? 22 : (s % 2 === 0 ? 15 : 9)));\n              line(xi, y0, y0 + dir * L * sc);\n              if (s % 16 === 0 && xi < w - 34) { c.font = isP ? font : small; var ti = String(s \/ 16); var twi = c.measureText(ti).width; c.fillText(ti, s === 0 ? xi + 3 : xi - twi \/ 2, dir > 0 ? y0 + 44 * sc : y0 - 44 * sc - 12); }\n            }\n            c.font = small; c.fillText('in', w - 20, dir > 0 ? y0 + 46 * sc : y0 - 46 * sc - 12);\n          }\n        });\n        mark.style.left = (X0 + pos) + 'px'; readout(); drawFixed();\n      }\n      \/* Reglas fijas (25, 20, 15, 10 y 5 cm o 12, 6, 4, 3, 2 y 1 in), con la misma calibraci\u00f3n *\/\n      var fcs = tool.querySelectorAll('[data-dgt-fc]'), U0 = tool.getAttribute('data-unit') || 'cm';\n      function drawFixed() {\n        Array.prototype.forEach.call(fcs, function (fc) {\n          var n = parseFloat(fc.getAttribute('data-n')), per = U0 === 'cm' ? ppm * 10 : ppm * 25.4, sub = U0 === 'cm' ? 10 : 16;\n          var w = Math.ceil(X0 + n * per + 34), h = 74, dpr = window.devicePixelRatio || 1;\n          fc.style.width = w + 'px'; fc.style.height = h + 'px'; fc.width = Math.round(w * dpr); fc.height = Math.round(h * dpr);\n          var c = fc.getContext('2d'); c.setTransform(dpr, 0, 0, dpr, 0, 0); c.clearRect(0, 0, w, h);\n          c.fillStyle = 'rgba(91,74,224,.10)'; c.fillRect(X0, 0, n * per, h);\n          c.strokeStyle = '#16161d'; c.fillStyle = '#16161d'; c.lineWidth = 1; c.textBaseline = 'top';\n          for (var k = 0; k <= n * sub; k++) {\n            var x = Math.round(X0 + k * per \/ sub) + 0.5, L;\n            if (U0 === 'cm') L = k % 10 === 0 ? 34 : (k % 5 === 0 ? 22 : 13);\n            else L = k % 16 === 0 ? 34 : (k % 8 === 0 ? 25 : (k % 4 === 0 ? 18 : (k % 2 === 0 ? 12 : 8)));\n            c.beginPath(); c.moveTo(x, 0); c.lineTo(x, L); c.stroke();\n            if (k % sub === 0) { c.font = '600 12px Inter Tight, system-ui, sans-serif'; var t = String(k \/ sub), tw = c.measureText(t).width; c.fillText(t, k === 0 ? x + 3 : x - tw \/ 2, 38); }\n          }\n          c.strokeStyle = '#e11d48'; c.lineWidth = 2;\n          [X0, X0 + n * per].forEach(function (xx) { c.beginPath(); c.moveTo(Math.round(xx) + 0.5, 0); c.lineTo(Math.round(xx) + 0.5, h); c.stroke(); });\n          c.font = '600 12px Inter Tight, system-ui, sans-serif'; c.fillStyle = '#e11d48';\n          var lab = NUM(n, 1) + ' ' + U0; c.fillText(lab, X0 + n * per - c.measureText(lab).width - 6, h - 17);\n        });\n      }\n      function setPos(px) { pos = Math.max(0, Math.min(px, box.clientWidth - X0 - 2)); mark.style.left = (X0 + pos) + 'px'; readout(); }\n      function fromEvent(e) { var r = box.getBoundingClientRect(); setPos((e.touches ? e.touches[0].clientX : e.clientX) - r.left - X0); }\n      var dragging = false;\n      mark.addEventListener('pointerdown', function (e) { dragging = true; try { mark.setPointerCapture(e.pointerId); } catch (x) { \/* nada *\/ } e.preventDefault(); });\n      mark.addEventListener('pointermove', function (e) { if (dragging) fromEvent(e); });\n      mark.addEventListener('pointerup', function () { dragging = false; });\n      box.addEventListener('click', function (e) { if (e.target === mark || mark.contains(e.target)) return; fromEvent(e); });\n      mark.addEventListener('keydown', function (e) {\n        var step = unit === 'cm' ? ppm : ppm * 25.4 \/ 16, big = unit === 'cm' ? ppm * 10 : ppm * 25.4;\n        if (e.key === 'ArrowRight' || e.key === 'ArrowUp') { setPos(pos + (e.shiftKey ? big : step)); e.preventDefault(); }\n        if (e.key === 'ArrowLeft' || e.key === 'ArrowDown') { setPos(pos - (e.shiftKey ? big : step)); e.preventDefault(); }\n        if (e.key === 'Home') { setPos(0); e.preventDefault(); }\n      });\n      \/* Ir a una medida: coloca el marcador en la medida escrita *\/\n      var gin = tool.querySelector('[data-dgt-goto]'), gu = tool.querySelector('[data-dgt-gu]');\n      function gotoM() {\n        if (!gin) return;\n        var v = parseFloat(String(gin.value).replace(',', '.')); if (!(v >= 0)) return;\n        var px = v * (unit === 'cm' ? 10 : 25.4) * ppm, mx = box.clientWidth - X0 - 2;\n        if (px > mx) { setPos(mx); var fit = mx \/ ppm \/ (unit === 'cm' ? 10 : 25.4); toast((U.no_cabe || '{n}').replace('{n}', NUM(Math.floor(fit * 10) \/ 10, 1) + ' ' + unit)); }\n        else setPos(px);\n      }\n      if (gin) { var gt = 0; gin.addEventListener('input', function () { clearTimeout(gt); gt = setTimeout(gotoM, 250); }); gin.addEventListener('keydown', function (e) { if (e.key === 'Enter') { clearTimeout(gt); gotoM(); } }); }\n      Array.prototype.forEach.call(tool.querySelectorAll('[data-u]'), function (bt, i, all) {\n        bt.addEventListener('click', function () {\n          unit = bt.getAttribute('data-u');\n          Array.prototype.forEach.call(all, function (x) { x.setAttribute('aria-checked', x === bt ? 'true' : 'false'); });\n          if (gu) gu.textContent = unit;\n          setState(); draw(); if (gin && gin.value) gotoM();\n        });\n      });\n      function cardSize() { if (card) card.style.width = (85.6 * ppm) + 'px'; if (slider) slider.value = ppm; }\n      tool.addEventListener('click', function (e) {\n        var a = e.target.closest('[data-act]'); if (!a) return;\n        var act = a.getAttribute('data-act');\n        if (act === 'calibrar') { cal.hidden = !cal.hidden; cardSize(); if (!cal.hidden) cal.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); }\n        if (act === 'cal-menos') { ppm = Math.max(2.4, ppm - 0.005); cardSize(); draw(); }\n        if (act === 'cal-mas') { ppm = Math.min(9, ppm + 0.005); cardSize(); draw(); }\n        if (act === 'cal-diag') {\n          var dg = parseFloat(String(diag.value).replace(',', '.'));\n          if (dg > 2) { ppm = Math.hypot(screen.width, screen.height) \/ dg \/ 25.4; cardSize(); draw(); }\n        }\n        if (act === 'cal-ok') { saved = ppm; try { localStorage.setItem(KEY, String(ppm)); } catch (x) { \/* nada *\/ } setState(); cal.hidden = true; toast(U.guardada || 'OK'); }\n        if (act === 'cal-reset') { ppm = DEF; saved = null; try { localStorage.removeItem(KEY); } catch (x) { \/* nada *\/ } cardSize(); setState(); draw(); }\n        if (act === 'pantalla') {\n          var on = !root.classList.contains('is-full');\n          var fsOk = tool.requestFullscreen && !d.fullscreenElement;\n          if (on && fsOk) { tool.requestFullscreen().catch(function () { \/* nada *\/ }); }\n          if (!on && d.fullscreenElement) { d.exitFullscreen().catch(function () { \/* nada *\/ }); }\n          root.classList.toggle('is-full', on); a.setAttribute('aria-pressed', on ? 'true' : 'false');\n          setTimeout(draw, 120);\n        }\n      });\n      d.addEventListener('fullscreenchange', function () { if (!d.fullscreenElement && root.classList.contains('is-full')) { root.classList.remove('is-full'); var p = tool.querySelector('[data-act=\"pantalla\"]'); if (p) p.setAttribute('aria-pressed', 'false'); setTimeout(draw, 120); } });\n      d.addEventListener('keydown', function (e) { if (e.key === 'Escape' && root.classList.contains('is-full')) { root.classList.remove('is-full'); setTimeout(draw, 120); } });\n      if (slider) slider.addEventListener('input', function () { ppm = parseFloat(slider.value); cardSize(); draw(); });\n      var rt = 0; window.addEventListener('resize', function () { clearTimeout(rt); rt = setTimeout(draw, 120); });\n      setState(); cardSize(); draw(); setPos(ppm * (unit === 'cm' ? 50 : 25.4 * 2));\n    });\n    \/* ---------- 3. Colores ---------- *\/\n    Array.prototype.forEach.call(root.querySelectorAll('[data-dgt-colors]'), function (tool) {\n      var U = ui(tool), cur = { r: 91, g: 74, b: 224 }, fmt = 'hex';\n      var show = detailPanel(tool, U);\n      var sw = tool.querySelector('.dgt-pick-sw'), cin = tool.querySelector('[data-dgt-cin]');\n      var F = {}; Array.prototype.forEach.call(tool.querySelectorAll('[data-fmt]'), function (i) { F[i.getAttribute('data-fmt')] = i; });\n      function h2(n) { return ('0' + n.toString(16)).slice(-2).toUpperCase(); }\n      function hex(c) { return '#' + h2(c.r) + h2(c.g) + h2(c.b); }\n      function parseHex(s) { var m = String(s).trim().replace('#', ''); if (\/^[0-9a-f]{3}$\/i.test(m)) m = m.replace(\/(.)\/g, '$1$1'); if (!\/^[0-9a-f]{6}$\/i.test(m)) return null; return { r: parseInt(m.slice(0, 2), 16), g: parseInt(m.slice(2, 4), 16), b: parseInt(m.slice(4, 6), 16) }; }\n      function toHsl(c) {\n        var r = c.r \/ 255, g = c.g \/ 255, b = c.b \/ 255, mx = Math.max(r, g, b), mn = Math.min(r, g, b), h = 0, s = 0, l = (mx + mn) \/ 2;\n        if (mx !== mn) { var dd = mx - mn; s = l > 0.5 ? dd \/ (2 - mx - mn) : dd \/ (mx + mn); h = mx === r ? (g - b) \/ dd + (g < b ? 6 : 0) : mx === g ? (b - r) \/ dd + 2 : (r - g) \/ dd + 4; h *= 60; }\n        return { h: Math.round(h), s: Math.round(s * 100), l: Math.round(l * 100) };\n      }\n      function fromHsl(h, s, l) {\n        s \/= 100; l \/= 100; var k = function (n) { return (n + h \/ 30) % 12; }, a = s * Math.min(l, 1 - l);\n        var f = function (n) { return l - a * Math.max(-1, Math.min(k(n) - 3, Math.min(9 - k(n), 1))); };\n        return { r: Math.round(f(0) * 255), g: Math.round(f(8) * 255), b: Math.round(f(4) * 255) };\n      }\n      function rgbS(c) { return 'rgb(' + c.r + ', ' + c.g + ', ' + c.b + ')'; }\n      function hslS(c) { var x = toHsl(c); return 'hsl(' + x.h + ', ' + x.s + '%, ' + x.l + '%)'; }\n      function cmykS(c) {\n        var r = c.r \/ 255, g = c.g \/ 255, b = c.b \/ 255, k = 1 - Math.max(r, g, b);\n        if (k >= 1) return 'cmyk(0%, 0%, 0%, 100%)';\n        var p = function (x) { return Math.round((1 - x - k) \/ (1 - k) * 100) + '%'; };\n        return 'cmyk(' + p(r) + ', ' + p(g) + ', ' + p(b) + ', ' + Math.round(k * 100) + '%)';\n      }\n      function lum(c) { var a = [c.r, c.g, c.b].map(function (v) { v \/= 255; return v <= 0.03928 ? v \/ 12.92 : Math.pow((v + 0.055) \/ 1.055, 2.4); }); return 0.2126 * a[0] + 0.7152 * a[1] + 0.0722 * a[2]; }\n      function ratio(a, b2) { var l1 = lum(a), l2 = lum(b2), hi = Math.max(l1, l2), lo = Math.min(l1, l2); return (hi + 0.05) \/ (lo + 0.05); }\n      function badge(r) { return r >= 7 ? 'AAA' : r >= 4.5 ? 'AA' : r >= 3 ? (U.aa_grande || 'AA large') : (U.no_pasa || 'Fail'); }\n      var ct = tool.querySelector('[data-dgt-contrast]');\n      function paint(skip) {\n        var hx = hex(cur);\n        tool.style.setProperty('--c', hx); sw.style.setProperty('--c', hx);\n        if (cin && skip !== 'cin') cin.value = hx.toLowerCase();\n        if (skip !== 'hex') F.hex.value = hx;\n        if (skip !== 'rgb') F.rgb.value = rgbS(cur);\n        if (skip !== 'hsl') F.hsl.value = hslS(cur);\n        F.cmyk.value = cmykS(cur);\n        if (ct) {\n          var rw = ratio(cur, { r: 255, g: 255, b: 255 }), rb = ratio(cur, { r: 0, g: 0, b: 0 });\n          ct.querySelector('[data-f=\"rw\"]').textContent = NUM(Math.floor(rw * 100) \/ 100, 2) + ':1'; ct.querySelector('[data-f=\"bw\"]').textContent = badge(rw);\n          ct.querySelector('[data-f=\"rb\"]').textContent = NUM(Math.floor(rb * 100) \/ 100, 2) + ':1'; ct.querySelector('[data-f=\"bb\"]').textContent = badge(rb);\n        }\n      }\n      if (cin) cin.addEventListener('input', function () { var c = parseHex(cin.value); if (c) { cur = c; paint('cin'); } });\n      F.hex.addEventListener('input', function () { var c = parseHex(F.hex.value); if (c) { cur = c; paint('hex'); } });\n      F.rgb.addEventListener('input', function () { var m = F.rgb.value.match(\/\\d+(\\.\\d+)?\/g); if (m && m.length >= 3) { var c = { r: Math.min(255, +m[0] | 0), g: Math.min(255, +m[1] | 0), b: Math.min(255, +m[2] | 0) }; cur = c; paint('rgb'); } });\n      F.hsl.addEventListener('input', function () { var m = F.hsl.value.match(\/\\d+(\\.\\d+)?\/g); if (m && m.length >= 3) { cur = fromHsl(+m[0] % 360, Math.min(100, +m[1]), Math.min(100, +m[2])); paint('hsl'); } });\n      Array.prototype.forEach.call(tool.querySelectorAll('[data-fmt]'), function (inp) {\n        inp.addEventListener('focus', function () { inp.select(); });\n      });\n      var ed = tool.querySelector('[data-act=\"eyedropper\"]');\n      if (ed && window.EyeDropper) {\n        ed.hidden = false;\n        ed.addEventListener('click', function () { new window.EyeDropper().open().then(function (r) { var c = parseHex(r.sRGBHex); if (c) { cur = c; paint(); copy(hex(c)); toast((U.copiado || 'Copied') + ': ' + hex(c)); } }).catch(function () { \/* cancelado *\/ }); });\n      }\n      var fin = tool.querySelector('[data-dgt-img]'), ibox = tool.querySelector('[data-dgt-imgbox]'), icv = tool.querySelector('[data-dgt-imgc]');\n      if (fin) fin.addEventListener('change', function () {\n        var f = fin.files && fin.files[0]; if (!f) return;\n        var url = URL.createObjectURL(f), img = new Image();\n        img.onload = function () {\n          var mw = Math.min(900, ibox.parentNode.clientWidth || 900), sc = Math.min(1, mw \/ img.width);\n          icv.width = Math.round(img.width * sc); icv.height = Math.round(img.height * sc);\n          icv.getContext('2d').drawImage(img, 0, 0, icv.width, icv.height); ibox.hidden = false; URL.revokeObjectURL(url);\n        };\n        img.src = url;\n      });\n      if (icv) icv.addEventListener('click', function (e) {\n        var r = icv.getBoundingClientRect(), x = Math.floor((e.clientX - r.left) * icv.width \/ r.width), y = Math.floor((e.clientY - r.top) * icv.height \/ r.height);\n        var p = icv.getContext('2d').getImageData(x, y, 1, 1).data; cur = { r: p[0], g: p[1], b: p[2] }; paint();\n        copy(hex(cur)); toast((U.copiado || 'Copied') + ': ' + hex(cur));\n      });\n      Array.prototype.forEach.call(tool.querySelectorAll('[data-fmtc]'), function (bt, i, all) {\n        bt.addEventListener('click', function () { fmt = bt.getAttribute('data-fmtc'); Array.prototype.forEach.call(all, function (x) { x.setAttribute('aria-checked', x === bt ? 'true' : 'false'); }); });\n      });\n      var sws = Array.prototype.slice.call(tool.querySelectorAll('.dgt-c'));\n      var idx = sws.map(function (el) { return { el: el, hay: norm((el.getAttribute('data-k') || '') + ' #' + el.getAttribute('data-h') + ' ' + el.getAttribute('data-h')), grp: el.closest('.dgt-grp') }; });\n      var q = tool.querySelector('[data-dgt-q]'), empty = tool.querySelector('[data-dgt-empty]'), groups = Array.prototype.slice.call(tool.querySelectorAll('.dgt-grp')), curG = '*';\n      function filter() {\n        var s = norm(q.value.trim()).replace(\/^#\/, ''), any = false, terms = s ? s.split(\/\\s+\/) : [];\n        idx.forEach(function (o) { var okG = curG === '*' || o.grp.getAttribute('data-g') === curG; var okQ = !terms.length || terms.every(function (t) { return o.hay.indexOf(t) > -1; }); o.el.hidden = !(okG && okQ); });\n        groups.forEach(function (g) {\n          Array.prototype.forEach.call(g.querySelectorAll('.dgt-cgrid'), function (gr) { var has = !!gr.querySelector('.dgt-c:not([hidden])'); gr.hidden = !has; var pv = gr.previousElementSibling; if (pv && pv.classList.contains('dgt-sh')) pv.hidden = !has; });\n          Array.prototype.forEach.call(g.querySelectorAll('.dgt-trow'), function (tr) { tr.hidden = !tr.querySelector('.dgt-c:not([hidden])'); });\n          var vis = !!g.querySelector('.dgt-c:not([hidden])'); g.hidden = !vis; any = any || vis;\n        });\n        empty.hidden = any;\n      }\n      var tq = 0; q.addEventListener('input', function () { clearTimeout(tq); tq = setTimeout(filter, 110); });\n      Array.prototype.forEach.call(tool.querySelectorAll('.dgt-chips button'), function (bt, i, all) {\n        bt.addEventListener('click', function () { Array.prototype.forEach.call(all, function (x) { x.classList.toggle('is-on', x === bt); }); curG = bt.getAttribute('data-g'); filter(); });\n      });\n      tool.addEventListener('click', function (e) {\n        var el = e.target.closest('.dgt-c'); if (!el) return;\n        var c = parseHex(el.getAttribute('data-h')); if (!c) return;\n        cur = c; paint();\n        var val = fmt === 'rgb' ? rgbS(c) : fmt === 'hsl' ? hslS(c) : hex(c);\n        copy(val); el.classList.add('is-copied'); setTimeout(function () { el.classList.remove('is-copied'); }, 1200);\n        toast((U.copiado || 'Copied') + ': ' + val);\n        var nm = el.querySelector('b'), sm = el.querySelector('small');\n        var name = (nm ? nm.textContent : (el.getAttribute('aria-label') || hex(c))) + (sm && nm ? ' (' + sm.textContent + ')' : '');\n        var css = el.getAttribute('data-css');\n        show('', name, [['HEX', hex(c)], ['RGB', rgbS(c)], ['HSL', hslS(c)], ['CMYK', cmykS(c)], css ? ['CSS', css] : null], hex(c));\n      });\n      \/* Comprobador de contraste entre dos colores (WCAG 2.2: 4,5:1 y 7:1 texto normal; 3:1 y 4,5:1 texto grande; 3:1 iconos y bordes) *\/\n      var cc = tool.querySelector('[data-dgt-cc]');\n      if (cc) {\n        var CC = {}; Array.prototype.forEach.call(cc.querySelectorAll('[data-cc]'), function (el) { CC[el.getAttribute('data-cc')] = el; });\n        var col = { fg: parseHex(CC.fg.value) || { r: 91, g: 74, b: 224 }, bg: parseHex(CC.bg.value) || { r: 255, g: 255, b: 255 } };\n        var ccPaint = function (skip) {\n          ['fg', 'bg'].forEach(function (k) { var hx = hex(col[k]); if (skip !== k) CC[k].value = hx; if (skip !== k + 'c') CC[k + 'c'].value = hx.toLowerCase(); });\n          CC.prev.style.color = hex(col.fg); CC.prev.style.background = hex(col.bg);\n          var r = ratio(col.fg, col.bg); CC.ratio.textContent = NUM(Math.floor(r * 100) \/ 100, 2) + ':1';\n          ['aa', 'aaa', 'aal', 'aaal', 'ui'].forEach(function (k) {\n            var li = CC[k], ok = r >= parseFloat(li.getAttribute('data-min'));\n            li.classList.toggle('is-ok', ok); li.classList.toggle('is-ko', !ok);\n            li.querySelector('b').textContent = ok ? (U.pasa || 'Pass') : (U.no_pasa || 'Fail');\n          });\n        };\n        ['fg', 'bg'].forEach(function (k) {\n          CC[k].addEventListener('input', function () { var c = parseHex(CC[k].value); if (c) { col[k] = c; ccPaint(k); } });\n          CC[k + 'c'].addEventListener('input', function () { var c = parseHex(CC[k + 'c'].value); if (c) { col[k] = c; ccPaint(k + 'c'); } });\n          CC[k].addEventListener('focus', function () { CC[k].select(); });\n        });\n        cc.addEventListener('click', function (e) {\n          var a = e.target.closest('[data-act]'); if (!a) return;\n          if (a.getAttribute('data-act') === 'cc-swap') { var t = col.fg; col.fg = col.bg; col.bg = t; ccPaint(); }\n          if (a.getAttribute('data-act') === 'cc-use') { col[a.getAttribute('data-t')] = { r: cur.r, g: cur.g, b: cur.b }; ccPaint(); }\n        });\n        ccPaint();\n      }\n      paint();\n    });\n    \/* Preguntas frecuentes: solo una abierta a la vez (de entrada, la primera) *\/\n    var fbs = root.querySelectorAll('.dgv-faq-btn');\n    Array.prototype.forEach.call(fbs, function (btn) {\n      btn.addEventListener('click', function () {\n        setTimeout(function () {\n          if (btn.getAttribute('aria-expanded') !== 'true') return;\n          Array.prototype.forEach.call(fbs, function (o) {\n            if (o === btn || o.getAttribute('aria-expanded') !== 'true') return;\n            o.setAttribute('aria-expanded', 'false'); var it = o.closest('.dgv-faq-item'); if (it) it.classList.remove('is-open');\n          });\n        }, 0);\n      });\n    });\n  }\n  if (d.readyState === 'loading') d.addEventListener('DOMContentLoaded', go); else go();\n})();\n<\/script><\/div><\/div>\n<\/div>\n<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"estilo_pagina_titulo":"","estilo_pagina_descripcion":"","estilo_pagina_imagen":"","_joinchat":[],"footnotes":""},"estilo_pagina":[],"class_list":["post-27401397","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.digiaccion.com\/en\/wp-json\/wp\/v2\/pages\/27401397","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.digiaccion.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.digiaccion.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.digiaccion.com\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.digiaccion.com\/en\/wp-json\/wp\/v2\/comments?post=27401397"}],"version-history":[{"count":3,"href":"https:\/\/www.digiaccion.com\/en\/wp-json\/wp\/v2\/pages\/27401397\/revisions"}],"predecessor-version":[{"id":27401400,"href":"https:\/\/www.digiaccion.com\/en\/wp-json\/wp\/v2\/pages\/27401397\/revisions\/27401400"}],"wp:attachment":[{"href":"https:\/\/www.digiaccion.com\/en\/wp-json\/wp\/v2\/media?parent=27401397"}],"wp:term":[{"taxonomy":"estilo_pagina","embeddable":true,"href":"https:\/\/www.digiaccion.com\/en\/wp-json\/wp\/v2\/estilo_pagina?post=27401397"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}