-td.Nd, td.Nl, td.No {background: #FDD} /* number */
-td.Sc {background: #FCD} /* currency */
-td.Sm {background: #ECE} /* math */
-td.So {background: #DCF} /* symbol */
-td.Pd, td.Po, td.Pc {background: #CDF} /* punctuation */
-td.Ps, td.Pe, td.Pi, td.Pf {background: #BEF} /* quote */
-td.Lm, td.Sk {background: #CEE} /* spacing modifier */
-td.Mn {background: #ACC} /* modifier */
-td.Cc, td.Cf {color: #666; background: #BBB} /* control */
-td.Zs {background: #ACB} /* space */
-td.Zs span {background: #EEE}
-td.Co {background: #A99} /* private */
-td.Xi, td.Cs {background: #CCC} /* invalid */
-td.Xd {color: #844} /* deprecated */
-td.Xr {color: #888} /* reserved (digraph reverse or proposal) */
-.dimap td.Xr {background: #EEE} /* reversed digraph */
-.ccmap td.Xr {opacity:.4}
-
-/* implementation-based alternatives */
-td.di-b {background: #FDD} /* bmp */
-td.di-d {background: #FFD} /* rfc-1345 digraph */
-td.di-prop {background: #FED} /* proposed digraph */
-td.di-a {background: #EFD} /* ascii */
-td.di-rare {background: #EEE} /* disfavoured */
-td.di-invalid {background: #BBB} /* impossible */
-
-/* continents */
-td.c-af {background: #FFC}
-td.c-eu {background: #FDC}
-td.c-as {background: #FDD}
-td.c-oc {background: #EEDDF4}
-td.c-aa {background: #E3E8FF}
-td.c-sa {background: #DFF}
-td.c-na {background: #DFD}
+.Nd, .Nl, .No {background: #FDD} /* number */
+.Sc {background: #FCD} /* currency */
+.Sm {background: #ECE} /* math */
+.So {background: #DCF} /* symbol */
+.Pd, .Po, .Pc {background: #CDF} /* punctuation */
+.Ps, .Pe, .Pi, .Pf {background: #BEF} /* quote */
+.Lm, .Sk {background: #CEE} /* spacing modifier */
+.Mn {background: #ACC} /* modifier */
+.Cc, .Cf {color: #666; background: #BBB} /* control */
+.Zs {background: #ACB} /* space */
+.Zs span {background: #EEE}
+.Co {background: #DCC} /* private */
+.Xi, .Cs {background: #CCC} /* invalid */
+.Xd {color: #844} /* deprecated */
+.Xr {color: #888} /* reserved (digraph reverse or proposal) */
+.dimap .Xr {background: #EEE} /* reversed digraph */
+.ccmap .Xr {opacity:.4}
+
+/* support levels */
+.l1 {background: #FDD} /* no, unsupported, other */
+.l2 {background: #FED} /* partial, restricted, unofficial */
+ /* default u-prop, u-bmp */
+.l3 {background: #FFD} /* almost, imperfect, common */
+ /* default u-di, u-lat1 */
+.l4 {background: #EFD} /* yes, supported, ubiquitous, native */
+ /* default u-ascii */
+.l5 {background: #DFD} /* complete, perfect */
+.l0 {background: #EEE} /* unknown, omitted */
+.ex { color: #888} /* experimental, disfavoured */
+.u-invalid {background: #BBB} /* invalid, impossible */
+
+.p0 {opacity: .6}
+.p0.p {opacity: 1}
+.p::after {content: '!'; color: #F00}
+.p4::after {color: #C00}
+.p3::after {color: #A00}
+.p2::after {color: #800}
+.p1::after,
+.p0::after {color: #000}
+.p09::after {opacity: .9}
+.p08::after {opacity: .8}
+.p07::after {opacity: .7}
+.p06::after {opacity: .6}
+.p05::after {opacity: .5}
+.p04::after {opacity: .4}
+.p03::after {opacity: .3}
+.p02::after {opacity: .2}
+.p01::after {opacity: .1}
+.p00::after {display: none}
+
+/* code syntax */
+.sy-comment { color: #888 }
+.sy-constant { color: #008 }
+.sy-type,
+.sy-identifier { color: #804 }
+.sy-statement { }
+.sy-preProc { }
+.sy-special { color: #408 }
+.sy-error { font-weight: bold; background-color: #F00; color: #FFF }
+.sy-todo { background-color: #FF0 }