gshr
git static host repo -- generates static html for repos
git clone https://git.vogt.world/gshr.git
Log | Files | README.md | LICENSE
← Commit log
commit
message
Using rsms.me/grid because it's easier than tables
author
Ben Vogt <[email protected]>
date
2023-04-06 17:23:03
stats
2 file(s) changed, 1381 insertions(+), 34 deletions(-)
files
gshr.css
template.index.html
   1diff --git a/gshr.css b/gshr.css
   2index db8595a..7e1c850 100644
   3--- a/gshr.css
   4+++ b/gshr.css
   5@@ -567,4 +567,1349 @@ div.content * td>* {
   6 
   7 .chroma .w {
   8   color: #bbbbbb
   9+}
  10+
  11+r-grid {
  12+  display: grid;
  13+  --grid-tc: repeat(4, 1fr);
  14+  grid-template-columns: var(--grid-tc);
  15+  --grid-cs: 1;
  16+  --grid-ce: -1
  17+}
  18+
  19+r-grid>r-cell {
  20+  display: block;
  21+  -moz-appearance: none;
  22+  appearance: none;
  23+  -webkit-appearance: none
  24+}
  25+
  26+r-grid[columns="1"] {
  27+  --grid-tc: repeat(1, 1fr)
  28+}
  29+
  30+r-grid[columns="2"] {
  31+  --grid-tc: repeat(2, 1fr)
  32+}
  33+
  34+r-grid[columns="3"] {
  35+  --grid-tc: repeat(3, 1fr)
  36+}
  37+
  38+r-grid[columns="4"] {
  39+  --grid-tc: repeat(4, 1fr)
  40+}
  41+
  42+r-grid[columns="5"] {
  43+  --grid-tc: repeat(5, 1fr)
  44+}
  45+
  46+r-grid[columns="6"] {
  47+  --grid-tc: repeat(6, 1fr)
  48+}
  49+
  50+r-grid[columns="7"] {
  51+  --grid-tc: repeat(7, 1fr)
  52+}
  53+
  54+r-grid[columns="8"] {
  55+  --grid-tc: repeat(8, 1fr)
  56+}
  57+
  58+r-grid[columns="9"] {
  59+  --grid-tc: repeat(9, 1fr)
  60+}
  61+
  62+r-grid[columns="10"] {
  63+  --grid-tc: repeat(10, 1fr)
  64+}
  65+
  66+r-grid[columns="11"] {
  67+  --grid-tc: repeat(11, 1fr)
  68+}
  69+
  70+r-grid[columns="12"] {
  71+  --grid-tc: repeat(12, 1fr)
  72+}
  73+
  74+r-grid[columns="13"] {
  75+  --grid-tc: repeat(13, 1fr)
  76+}
  77+
  78+r-grid[columns="14"] {
  79+  --grid-tc: repeat(14, 1fr)
  80+}
  81+
  82+r-grid[columns="15"] {
  83+  --grid-tc: repeat(15, 1fr)
  84+}
  85+
  86+r-grid[columns="16"] {
  87+  --grid-tc: repeat(16, 1fr)
  88+}
  89+
  90+r-grid[columns="17"] {
  91+  --grid-tc: repeat(17, 1fr)
  92+}
  93+
  94+r-grid[columns="18"] {
  95+  --grid-tc: repeat(18, 1fr)
  96+}
  97+
  98+r-grid[columns="19"] {
  99+  --grid-tc: repeat(19, 1fr)
 100+}
 101+
 102+r-grid[columns="20"] {
 103+  --grid-tc: repeat(20, 1fr)
 104+}
 105+
 106+r-grid[columns="21"] {
 107+  --grid-tc: repeat(21, 1fr)
 108+}
 109+
 110+r-grid[columns="22"] {
 111+  --grid-tc: repeat(22, 1fr)
 112+}
 113+
 114+r-grid[columns="23"] {
 115+  --grid-tc: repeat(23, 1fr)
 116+}
 117+
 118+r-grid[columns="24"] {
 119+  --grid-tc: repeat(24, 1fr)
 120+}
 121+
 122+r-grid[columns="25"] {
 123+  --grid-tc: repeat(25, 1fr)
 124+}
 125+
 126+r-grid[columns="26"] {
 127+  --grid-tc: repeat(26, 1fr)
 128+}
 129+
 130+r-grid[columns="27"] {
 131+  --grid-tc: repeat(27, 1fr)
 132+}
 133+
 134+r-grid[columns="28"] {
 135+  --grid-tc: repeat(28, 1fr)
 136+}
 137+
 138+r-grid[columns="29"] {
 139+  --grid-tc: repeat(29, 1fr)
 140+}
 141+
 142+r-grid[columns="30"] {
 143+  --grid-tc: repeat(30, 1fr)
 144+}
 145+
 146+r-grid>r-cell[span^="1"] {
 147+  --grid-cs: 1
 148+}
 149+
 150+r-grid>r-cell[span^="2"] {
 151+  --grid-cs: 2
 152+}
 153+
 154+r-grid>r-cell[span^="3"] {
 155+  --grid-cs: 3
 156+}
 157+
 158+r-grid>r-cell[span^="4"] {
 159+  --grid-cs: 4
 160+}
 161+
 162+r-grid>r-cell[span^="5"] {
 163+  --grid-cs: 5
 164+}
 165+
 166+r-grid>r-cell[span^="6"] {
 167+  --grid-cs: 6
 168+}
 169+
 170+r-grid>r-cell[span^="7"] {
 171+  --grid-cs: 7
 172+}
 173+
 174+r-grid>r-cell[span^="8"] {
 175+  --grid-cs: 8
 176+}
 177+
 178+r-grid>r-cell[span^="9"] {
 179+  --grid-cs: 9
 180+}
 181+
 182+r-grid>r-cell[span^="10"] {
 183+  --grid-cs: 10
 184+}
 185+
 186+r-grid>r-cell[span^="11"] {
 187+  --grid-cs: 11
 188+}
 189+
 190+r-grid>r-cell[span^="12"] {
 191+  --grid-cs: 12
 192+}
 193+
 194+r-grid>r-cell[span^="13"] {
 195+  --grid-cs: 13
 196+}
 197+
 198+r-grid>r-cell[span^="14"] {
 199+  --grid-cs: 14
 200+}
 201+
 202+r-grid>r-cell[span^="15"] {
 203+  --grid-cs: 15
 204+}
 205+
 206+r-grid>r-cell[span^="16"] {
 207+  --grid-cs: 16
 208+}
 209+
 210+r-grid>r-cell[span^="17"] {
 211+  --grid-cs: 17
 212+}
 213+
 214+r-grid>r-cell[span^="18"] {
 215+  --grid-cs: 18
 216+}
 217+
 218+r-grid>r-cell[span^="19"] {
 219+  --grid-cs: 19
 220+}
 221+
 222+r-grid>r-cell[span^="20"] {
 223+  --grid-cs: 20
 224+}
 225+
 226+r-grid>r-cell[span^="21"] {
 227+  --grid-cs: 21
 228+}
 229+
 230+r-grid>r-cell[span^="22"] {
 231+  --grid-cs: 22
 232+}
 233+
 234+r-grid>r-cell[span^="23"] {
 235+  --grid-cs: 23
 236+}
 237+
 238+r-grid>r-cell[span^="24"] {
 239+  --grid-cs: 24
 240+}
 241+
 242+r-grid>r-cell[span^="25"] {
 243+  --grid-cs: 25
 244+}
 245+
 246+r-grid>r-cell[span^="26"] {
 247+  --grid-cs: 26
 248+}
 249+
 250+r-grid>r-cell[span^="27"] {
 251+  --grid-cs: 27
 252+}
 253+
 254+r-grid>r-cell[span^="28"] {
 255+  --grid-cs: 28
 256+}
 257+
 258+r-grid>r-cell[span^="29"] {
 259+  --grid-cs: 29
 260+}
 261+
 262+r-grid>r-cell[span^="30"] {
 263+  --grid-cs: 30
 264+}
 265+
 266+r-grid>r-cell[span$="+1"],
 267+r-grid>r-cell[span="1"] {
 268+  --grid-ce: 1
 269+}
 270+
 271+r-grid>r-cell[span$="+2"],
 272+r-grid>r-cell[span$="-1"],
 273+r-grid>r-cell[span="2"] {
 274+  --grid-ce: 2
 275+}
 276+
 277+r-grid>r-cell[span$="+3"],
 278+r-grid>r-cell[span$="-2"],
 279+r-grid>r-cell[span="3"] {
 280+  --grid-ce: 3
 281+}
 282+
 283+r-grid>r-cell[span$="+4"],
 284+r-grid>r-cell[span$="-3"],
 285+r-grid>r-cell[span="4"] {
 286+  --grid-ce: 4
 287+}
 288+
 289+r-grid>r-cell[span$="+5"],
 290+r-grid>r-cell[span$="-4"],
 291+r-grid>r-cell[span="5"] {
 292+  --grid-ce: 5
 293+}
 294+
 295+r-grid>r-cell[span$="+6"],
 296+r-grid>r-cell[span$="-5"],
 297+r-grid>r-cell[span="6"] {
 298+  --grid-ce: 6
 299+}
 300+
 301+r-grid>r-cell[span$="+7"],
 302+r-grid>r-cell[span$="-6"],
 303+r-grid>r-cell[span="7"] {
 304+  --grid-ce: 7
 305+}
 306+
 307+r-grid>r-cell[span$="+8"],
 308+r-grid>r-cell[span$="-7"],
 309+r-grid>r-cell[span="8"] {
 310+  --grid-ce: 8
 311+}
 312+
 313+r-grid>r-cell[span$="+9"],
 314+r-grid>r-cell[span$="-8"],
 315+r-grid>r-cell[span="9"] {
 316+  --grid-ce: 9
 317+}
 318+
 319+r-grid>r-cell[span$="+10"],
 320+r-grid>r-cell[span$="-9"],
 321+r-grid>r-cell[span="10"] {
 322+  --grid-ce: 10
 323+}
 324+
 325+r-grid>r-cell[span$="+11"],
 326+r-grid>r-cell[span$="-10"],
 327+r-grid>r-cell[span="11"] {
 328+  --grid-ce: 11
 329+}
 330+
 331+r-grid>r-cell[span$="+12"],
 332+r-grid>r-cell[span$="-11"],
 333+r-grid>r-cell[span="12"] {
 334+  --grid-ce: 12
 335+}
 336+
 337+r-grid>r-cell[span$="+13"],
 338+r-grid>r-cell[span$="-12"],
 339+r-grid>r-cell[span="13"] {
 340+  --grid-ce: 13
 341+}
 342+
 343+r-grid>r-cell[span$="+14"],
 344+r-grid>r-cell[span$="-13"],
 345+r-grid>r-cell[span="14"] {
 346+  --grid-ce: 14
 347+}
 348+
 349+r-grid>r-cell[span$="+15"],
 350+r-grid>r-cell[span$="-14"],
 351+r-grid>r-cell[span="15"] {
 352+  --grid-ce: 15
 353+}
 354+
 355+r-grid>r-cell[span$="+16"],
 356+r-grid>r-cell[span$="-15"],
 357+r-grid>r-cell[span="16"] {
 358+  --grid-ce: 16
 359+}
 360+
 361+r-grid>r-cell[span$="+17"],
 362+r-grid>r-cell[span$="-16"],
 363+r-grid>r-cell[span="17"] {
 364+  --grid-ce: 17
 365+}
 366+
 367+r-grid>r-cell[span$="+18"],
 368+r-grid>r-cell[span$="-17"],
 369+r-grid>r-cell[span="18"] {
 370+  --grid-ce: 18
 371+}
 372+
 373+r-grid>r-cell[span$="+19"],
 374+r-grid>r-cell[span$="-18"],
 375+r-grid>r-cell[span="19"] {
 376+  --grid-ce: 19
 377+}
 378+
 379+r-grid>r-cell[span$="+20"],
 380+r-grid>r-cell[span$="-19"],
 381+r-grid>r-cell[span="20"] {
 382+  --grid-ce: 20
 383+}
 384+
 385+r-grid>r-cell[span$="+21"],
 386+r-grid>r-cell[span$="-20"],
 387+r-grid>r-cell[span="21"] {
 388+  --grid-ce: 21
 389+}
 390+
 391+r-grid>r-cell[span$="+22"],
 392+r-grid>r-cell[span$="-21"],
 393+r-grid>r-cell[span="22"] {
 394+  --grid-ce: 22
 395+}
 396+
 397+r-grid>r-cell[span$="+23"],
 398+r-grid>r-cell[span$="-22"],
 399+r-grid>r-cell[span="23"] {
 400+  --grid-ce: 23
 401+}
 402+
 403+r-grid>r-cell[span$="+24"],
 404+r-grid>r-cell[span$="-23"],
 405+r-grid>r-cell[span="24"] {
 406+  --grid-ce: 24
 407+}
 408+
 409+r-grid>r-cell[span$="+25"],
 410+r-grid>r-cell[span$="-24"],
 411+r-grid>r-cell[span="25"] {
 412+  --grid-ce: 25
 413+}
 414+
 415+r-grid>r-cell[span$="+26"],
 416+r-grid>r-cell[span$="-25"],
 417+r-grid>r-cell[span="26"] {
 418+  --grid-ce: 26
 419+}
 420+
 421+r-grid>r-cell[span$="+27"],
 422+r-grid>r-cell[span$="-26"],
 423+r-grid>r-cell[span="27"] {
 424+  --grid-ce: 27
 425+}
 426+
 427+r-grid>r-cell[span$="+28"],
 428+r-grid>r-cell[span$="-27"],
 429+r-grid>r-cell[span="28"] {
 430+  --grid-ce: 28
 431+}
 432+
 433+r-grid>r-cell[span$="+29"],
 434+r-grid>r-cell[span$="-28"],
 435+r-grid>r-cell[span="29"] {
 436+  --grid-ce: 29
 437+}
 438+
 439+r-grid>r-cell[span$="+30"],
 440+r-grid>r-cell[span$="-29"],
 441+r-grid>r-cell[span="30"] {
 442+  --grid-ce: 30
 443+}
 444+
 445+r-grid>r-cell[span$="-30"] {
 446+  --grid-ce: 31
 447+}
 448+
 449+r-grid>r-cell[span] {
 450+  grid-column-end: span var(--grid-ce)
 451+}
 452+
 453+r-grid>r-cell[span*="+"],
 454+r-grid>r-cell[span*="-"],
 455+r-grid>r-cell[span*=".."] {
 456+  grid-column-start: var(--grid-cs)
 457+}
 458+
 459+r-grid>r-cell[span*="-"],
 460+r-grid>r-cell[span*=".."] {
 461+  grid-column-end: var(--grid-ce)
 462+}
 463+
 464+r-grid>r-cell[span=row] {
 465+  grid-column: 1/-1
 466+}
 467+
 468+@media only screen and (max-width:600px) {
 469+  r-grid[columns-s="1"] {
 470+    --grid-tc: repeat(1, 1fr)
 471+  }
 472+
 473+  r-grid[columns-s="2"] {
 474+    --grid-tc: repeat(2, 1fr)
 475+  }
 476+
 477+  r-grid[columns-s="3"] {
 478+    --grid-tc: repeat(3, 1fr)
 479+  }
 480+
 481+  r-grid[columns-s="4"] {
 482+    --grid-tc: repeat(4, 1fr)
 483+  }
 484+
 485+  r-grid[columns-s="5"] {
 486+    --grid-tc: repeat(5, 1fr)
 487+  }
 488+
 489+  r-grid[columns-s="6"] {
 490+    --grid-tc: repeat(6, 1fr)
 491+  }
 492+
 493+  r-grid[columns-s="7"] {
 494+    --grid-tc: repeat(7, 1fr)
 495+  }
 496+
 497+  r-grid[columns-s="8"] {
 498+    --grid-tc: repeat(8, 1fr)
 499+  }
 500+
 501+  r-grid[columns-s="9"] {
 502+    --grid-tc: repeat(9, 1fr)
 503+  }
 504+
 505+  r-grid[columns-s="10"] {
 506+    --grid-tc: repeat(10, 1fr)
 507+  }
 508+
 509+  r-grid[columns-s="11"] {
 510+    --grid-tc: repeat(11, 1fr)
 511+  }
 512+
 513+  r-grid[columns-s="12"] {
 514+    --grid-tc: repeat(12, 1fr)
 515+  }
 516+
 517+  r-grid[columns-s="13"] {
 518+    --grid-tc: repeat(13, 1fr)
 519+  }
 520+
 521+  r-grid[columns-s="14"] {
 522+    --grid-tc: repeat(14, 1fr)
 523+  }
 524+
 525+  r-grid[columns-s="15"] {
 526+    --grid-tc: repeat(15, 1fr)
 527+  }
 528+
 529+  r-grid[columns-s="16"] {
 530+    --grid-tc: repeat(16, 1fr)
 531+  }
 532+
 533+  r-grid[columns-s="17"] {
 534+    --grid-tc: repeat(17, 1fr)
 535+  }
 536+
 537+  r-grid[columns-s="18"] {
 538+    --grid-tc: repeat(18, 1fr)
 539+  }
 540+
 541+  r-grid[columns-s="19"] {
 542+    --grid-tc: repeat(19, 1fr)
 543+  }
 544+
 545+  r-grid[columns-s="20"] {
 546+    --grid-tc: repeat(20, 1fr)
 547+  }
 548+
 549+  r-grid[columns-s="21"] {
 550+    --grid-tc: repeat(21, 1fr)
 551+  }
 552+
 553+  r-grid[columns-s="22"] {
 554+    --grid-tc: repeat(22, 1fr)
 555+  }
 556+
 557+  r-grid[columns-s="23"] {
 558+    --grid-tc: repeat(23, 1fr)
 559+  }
 560+
 561+  r-grid[columns-s="24"] {
 562+    --grid-tc: repeat(24, 1fr)
 563+  }
 564+
 565+  r-grid[columns-s="25"] {
 566+    --grid-tc: repeat(25, 1fr)
 567+  }
 568+
 569+  r-grid[columns-s="26"] {
 570+    --grid-tc: repeat(26, 1fr)
 571+  }
 572+
 573+  r-grid[columns-s="27"] {
 574+    --grid-tc: repeat(27, 1fr)
 575+  }
 576+
 577+  r-grid[columns-s="28"] {
 578+    --grid-tc: repeat(28, 1fr)
 579+  }
 580+
 581+  r-grid[columns-s="29"] {
 582+    --grid-tc: repeat(29, 1fr)
 583+  }
 584+
 585+  r-grid[columns-s="30"] {
 586+    --grid-tc: repeat(30, 1fr)
 587+  }
 588+
 589+  r-grid>r-cell[span-s^="1"] {
 590+    --grid-cs: 1
 591+  }
 592+
 593+  r-grid>r-cell[span-s^="2"] {
 594+    --grid-cs: 2
 595+  }
 596+
 597+  r-grid>r-cell[span-s^="3"] {
 598+    --grid-cs: 3
 599+  }
 600+
 601+  r-grid>r-cell[span-s^="4"] {
 602+    --grid-cs: 4
 603+  }
 604+
 605+  r-grid>r-cell[span-s^="5"] {
 606+    --grid-cs: 5
 607+  }
 608+
 609+  r-grid>r-cell[span-s^="6"] {
 610+    --grid-cs: 6
 611+  }
 612+
 613+  r-grid>r-cell[span-s^="7"] {
 614+    --grid-cs: 7
 615+  }
 616+
 617+  r-grid>r-cell[span-s^="8"] {
 618+    --grid-cs: 8
 619+  }
 620+
 621+  r-grid>r-cell[span-s^="9"] {
 622+    --grid-cs: 9
 623+  }
 624+
 625+  r-grid>r-cell[span-s^="10"] {
 626+    --grid-cs: 10
 627+  }
 628+
 629+  r-grid>r-cell[span-s^="11"] {
 630+    --grid-cs: 11
 631+  }
 632+
 633+  r-grid>r-cell[span-s^="12"] {
 634+    --grid-cs: 12
 635+  }
 636+
 637+  r-grid>r-cell[span-s^="13"] {
 638+    --grid-cs: 13
 639+  }
 640+
 641+  r-grid>r-cell[span-s^="14"] {
 642+    --grid-cs: 14
 643+  }
 644+
 645+  r-grid>r-cell[span-s^="15"] {
 646+    --grid-cs: 15
 647+  }
 648+
 649+  r-grid>r-cell[span-s^="16"] {
 650+    --grid-cs: 16
 651+  }
 652+
 653+  r-grid>r-cell[span-s^="17"] {
 654+    --grid-cs: 17
 655+  }
 656+
 657+  r-grid>r-cell[span-s^="18"] {
 658+    --grid-cs: 18
 659+  }
 660+
 661+  r-grid>r-cell[span-s^="19"] {
 662+    --grid-cs: 19
 663+  }
 664+
 665+  r-grid>r-cell[span-s^="20"] {
 666+    --grid-cs: 20
 667+  }
 668+
 669+  r-grid>r-cell[span-s^="21"] {
 670+    --grid-cs: 21
 671+  }
 672+
 673+  r-grid>r-cell[span-s^="22"] {
 674+    --grid-cs: 22
 675+  }
 676+
 677+  r-grid>r-cell[span-s^="23"] {
 678+    --grid-cs: 23
 679+  }
 680+
 681+  r-grid>r-cell[span-s^="24"] {
 682+    --grid-cs: 24
 683+  }
 684+
 685+  r-grid>r-cell[span-s^="25"] {
 686+    --grid-cs: 25
 687+  }
 688+
 689+  r-grid>r-cell[span-s^="26"] {
 690+    --grid-cs: 26
 691+  }
 692+
 693+  r-grid>r-cell[span-s^="27"] {
 694+    --grid-cs: 27
 695+  }
 696+
 697+  r-grid>r-cell[span-s^="28"] {
 698+    --grid-cs: 28
 699+  }
 700+
 701+  r-grid>r-cell[span-s^="29"] {
 702+    --grid-cs: 29
 703+  }
 704+
 705+  r-grid>r-cell[span-s^="30"] {
 706+    --grid-cs: 30
 707+  }
 708+
 709+  r-grid>r-cell[span-s$="+1"],
 710+  r-grid>r-cell[span-s="1"] {
 711+    --grid-ce: 1
 712+  }
 713+
 714+  r-grid>r-cell[span-s$="+2"],
 715+  r-grid>r-cell[span-s$="-1"],
 716+  r-grid>r-cell[span-s="2"] {
 717+    --grid-ce: 2
 718+  }
 719+
 720+  r-grid>r-cell[span-s$="+3"],
 721+  r-grid>r-cell[span-s$="-2"],
 722+  r-grid>r-cell[span-s="3"] {
 723+    --grid-ce: 3
 724+  }
 725+
 726+  r-grid>r-cell[span-s$="+4"],
 727+  r-grid>r-cell[span-s$="-3"],
 728+  r-grid>r-cell[span-s="4"] {
 729+    --grid-ce: 4
 730+  }
 731+
 732+  r-grid>r-cell[span-s$="+5"],
 733+  r-grid>r-cell[span-s$="-4"],
 734+  r-grid>r-cell[span-s="5"] {
 735+    --grid-ce: 5
 736+  }
 737+
 738+  r-grid>r-cell[span-s$="+6"],
 739+  r-grid>r-cell[span-s$="-5"],
 740+  r-grid>r-cell[span-s="6"] {
 741+    --grid-ce: 6
 742+  }
 743+
 744+  r-grid>r-cell[span-s$="+7"],
 745+  r-grid>r-cell[span-s$="-6"],
 746+  r-grid>r-cell[span-s="7"] {
 747+    --grid-ce: 7
 748+  }
 749+
 750+  r-grid>r-cell[span-s$="+8"],
 751+  r-grid>r-cell[span-s$="-7"],
 752+  r-grid>r-cell[span-s="8"] {
 753+    --grid-ce: 8
 754+  }
 755+
 756+  r-grid>r-cell[span-s$="+9"],
 757+  r-grid>r-cell[span-s$="-8"],
 758+  r-grid>r-cell[span-s="9"] {
 759+    --grid-ce: 9
 760+  }
 761+
 762+  r-grid>r-cell[span-s$="+10"],
 763+  r-grid>r-cell[span-s$="-9"],
 764+  r-grid>r-cell[span-s="10"] {
 765+    --grid-ce: 10
 766+  }
 767+
 768+  r-grid>r-cell[span-s$="+11"],
 769+  r-grid>r-cell[span-s$="-10"],
 770+  r-grid>r-cell[span-s="11"] {
 771+    --grid-ce: 11
 772+  }
 773+
 774+  r-grid>r-cell[span-s$="+12"],
 775+  r-grid>r-cell[span-s$="-11"],
 776+  r-grid>r-cell[span-s="12"] {
 777+    --grid-ce: 12
 778+  }
 779+
 780+  r-grid>r-cell[span-s$="+13"],
 781+  r-grid>r-cell[span-s$="-12"],
 782+  r-grid>r-cell[span-s="13"] {
 783+    --grid-ce: 13
 784+  }
 785+
 786+  r-grid>r-cell[span-s$="+14"],
 787+  r-grid>r-cell[span-s$="-13"],
 788+  r-grid>r-cell[span-s="14"] {
 789+    --grid-ce: 14
 790+  }
 791+
 792+  r-grid>r-cell[span-s$="+15"],
 793+  r-grid>r-cell[span-s$="-14"],
 794+  r-grid>r-cell[span-s="15"] {
 795+    --grid-ce: 15
 796+  }
 797+
 798+  r-grid>r-cell[span-s$="+16"],
 799+  r-grid>r-cell[span-s$="-15"],
 800+  r-grid>r-cell[span-s="16"] {
 801+    --grid-ce: 16
 802+  }
 803+
 804+  r-grid>r-cell[span-s$="+17"],
 805+  r-grid>r-cell[span-s$="-16"],
 806+  r-grid>r-cell[span-s="17"] {
 807+    --grid-ce: 17
 808+  }
 809+
 810+  r-grid>r-cell[span-s$="+18"],
 811+  r-grid>r-cell[span-s$="-17"],
 812+  r-grid>r-cell[span-s="18"] {
 813+    --grid-ce: 18
 814+  }
 815+
 816+  r-grid>r-cell[span-s$="+19"],
 817+  r-grid>r-cell[span-s$="-18"],
 818+  r-grid>r-cell[span-s="19"] {
 819+    --grid-ce: 19
 820+  }
 821+
 822+  r-grid>r-cell[span-s$="+20"],
 823+  r-grid>r-cell[span-s$="-19"],
 824+  r-grid>r-cell[span-s="20"] {
 825+    --grid-ce: 20
 826+  }
 827+
 828+  r-grid>r-cell[span-s$="+21"],
 829+  r-grid>r-cell[span-s$="-20"],
 830+  r-grid>r-cell[span-s="21"] {
 831+    --grid-ce: 21
 832+  }
 833+
 834+  r-grid>r-cell[span-s$="+22"],
 835+  r-grid>r-cell[span-s$="-21"],
 836+  r-grid>r-cell[span-s="22"] {
 837+    --grid-ce: 22
 838+  }
 839+
 840+  r-grid>r-cell[span-s$="+23"],
 841+  r-grid>r-cell[span-s$="-22"],
 842+  r-grid>r-cell[span-s="23"] {
 843+    --grid-ce: 23
 844+  }
 845+
 846+  r-grid>r-cell[span-s$="+24"],
 847+  r-grid>r-cell[span-s$="-23"],
 848+  r-grid>r-cell[span-s="24"] {
 849+    --grid-ce: 24
 850+  }
 851+
 852+  r-grid>r-cell[span-s$="+25"],
 853+  r-grid>r-cell[span-s$="-24"],
 854+  r-grid>r-cell[span-s="25"] {
 855+    --grid-ce: 25
 856+  }
 857+
 858+  r-grid>r-cell[span-s$="+26"],
 859+  r-grid>r-cell[span-s$="-25"],
 860+  r-grid>r-cell[span-s="26"] {
 861+    --grid-ce: 26
 862+  }
 863+
 864+  r-grid>r-cell[span-s$="+27"],
 865+  r-grid>r-cell[span-s$="-26"],
 866+  r-grid>r-cell[span-s="27"] {
 867+    --grid-ce: 27
 868+  }
 869+
 870+  r-grid>r-cell[span-s$="+28"],
 871+  r-grid>r-cell[span-s$="-27"],
 872+  r-grid>r-cell[span-s="28"] {
 873+    --grid-ce: 28
 874+  }
 875+
 876+  r-grid>r-cell[span-s$="+29"],
 877+  r-grid>r-cell[span-s$="-28"],
 878+  r-grid>r-cell[span-s="29"] {
 879+    --grid-ce: 29
 880+  }
 881+
 882+  r-grid>r-cell[span-s$="+30"],
 883+  r-grid>r-cell[span-s$="-29"],
 884+  r-grid>r-cell[span-s="30"] {
 885+    --grid-ce: 30
 886+  }
 887+
 888+  r-grid>r-cell[span-s$="-30"] {
 889+    --grid-ce: 31
 890+  }
 891+
 892+  r-grid>r-cell[span-s] {
 893+    grid-column-end: span var(--grid-ce)
 894+  }
 895+
 896+  r-grid>r-cell[span-s*="+"],
 897+  r-grid>r-cell[span-s*="-"],
 898+  r-grid>r-cell[span-s*=".."] {
 899+    grid-column-start: var(--grid-cs)
 900+  }
 901+
 902+  r-grid>r-cell[span-s*="-"],
 903+  r-grid>r-cell[span-s*=".."] {
 904+    grid-column-end: var(--grid-ce)
 905+  }
 906+
 907+  r-grid>r-cell[span-s=row] {
 908+    grid-column: 1/-1
 909+  }
 910+}
 911+
 912+@media only screen and (min-width:1599px) {
 913+  r-grid[columns-l="1"] {
 914+    --grid-tc: repeat(1, 1fr)
 915+  }
 916+
 917+  r-grid[columns-l="2"] {
 918+    --grid-tc: repeat(2, 1fr)
 919+  }
 920+
 921+  r-grid[columns-l="3"] {
 922+    --grid-tc: repeat(3, 1fr)
 923+  }
 924+
 925+  r-grid[columns-l="4"] {
 926+    --grid-tc: repeat(4, 1fr)
 927+  }
 928+
 929+  r-grid[columns-l="5"] {
 930+    --grid-tc: repeat(5, 1fr)
 931+  }
 932+
 933+  r-grid[columns-l="6"] {
 934+    --grid-tc: repeat(6, 1fr)
 935+  }
 936+
 937+  r-grid[columns-l="7"] {
 938+    --grid-tc: repeat(7, 1fr)
 939+  }
 940+
 941+  r-grid[columns-l="8"] {
 942+    --grid-tc: repeat(8, 1fr)
 943+  }
 944+
 945+  r-grid[columns-l="9"] {
 946+    --grid-tc: repeat(9, 1fr)
 947+  }
 948+
 949+  r-grid[columns-l="10"] {
 950+    --grid-tc: repeat(10, 1fr)
 951+  }
 952+
 953+  r-grid[columns-l="11"] {
 954+    --grid-tc: repeat(11, 1fr)
 955+  }
 956+
 957+  r-grid[columns-l="12"] {
 958+    --grid-tc: repeat(12, 1fr)
 959+  }
 960+
 961+  r-grid[columns-l="13"] {
 962+    --grid-tc: repeat(13, 1fr)
 963+  }
 964+
 965+  r-grid[columns-l="14"] {
 966+    --grid-tc: repeat(14, 1fr)
 967+  }
 968+
 969+  r-grid[columns-l="15"] {
 970+    --grid-tc: repeat(15, 1fr)
 971+  }
 972+
 973+  r-grid[columns-l="16"] {
 974+    --grid-tc: repeat(16, 1fr)
 975+  }
 976+
 977+  r-grid[columns-l="17"] {
 978+    --grid-tc: repeat(17, 1fr)
 979+  }
 980+
 981+  r-grid[columns-l="18"] {
 982+    --grid-tc: repeat(18, 1fr)
 983+  }
 984+
 985+  r-grid[columns-l="19"] {
 986+    --grid-tc: repeat(19, 1fr)
 987+  }
 988+
 989+  r-grid[columns-l="20"] {
 990+    --grid-tc: repeat(20, 1fr)
 991+  }
 992+
 993+  r-grid[columns-l="21"] {
 994+    --grid-tc: repeat(21, 1fr)
 995+  }
 996+
 997+  r-grid[columns-l="22"] {
 998+    --grid-tc: repeat(22, 1fr)
 999+  }
1000+
1001+  r-grid[columns-l="23"] {
1002+    --grid-tc: repeat(23, 1fr)
1003+  }
1004+
1005+  r-grid[columns-l="24"] {
1006+    --grid-tc: repeat(24, 1fr)
1007+  }
1008+
1009+  r-grid[columns-l="25"] {
1010+    --grid-tc: repeat(25, 1fr)
1011+  }
1012+
1013+  r-grid[columns-l="26"] {
1014+    --grid-tc: repeat(26, 1fr)
1015+  }
1016+
1017+  r-grid[columns-l="27"] {
1018+    --grid-tc: repeat(27, 1fr)
1019+  }
1020+
1021+  r-grid[columns-l="28"] {
1022+    --grid-tc: repeat(28, 1fr)
1023+  }
1024+
1025+  r-grid[columns-l="29"] {
1026+    --grid-tc: repeat(29, 1fr)
1027+  }
1028+
1029+  r-grid[columns-l="30"] {
1030+    --grid-tc: repeat(30, 1fr)
1031+  }
1032+
1033+  r-grid>r-cell[span-l^="1"] {
1034+    --grid-cs: 1
1035+  }
1036+
1037+  r-grid>r-cell[span-l^="2"] {
1038+    --grid-cs: 2
1039+  }
1040+
1041+  r-grid>r-cell[span-l^="3"] {
1042+    --grid-cs: 3
1043+  }
1044+
1045+  r-grid>r-cell[span-l^="4"] {
1046+    --grid-cs: 4
1047+  }
1048+
1049+  r-grid>r-cell[span-l^="5"] {
1050+    --grid-cs: 5
1051+  }
1052+
1053+  r-grid>r-cell[span-l^="6"] {
1054+    --grid-cs: 6
1055+  }
1056+
1057+  r-grid>r-cell[span-l^="7"] {
1058+    --grid-cs: 7
1059+  }
1060+
1061+  r-grid>r-cell[span-l^="8"] {
1062+    --grid-cs: 8
1063+  }
1064+
1065+  r-grid>r-cell[span-l^="9"] {
1066+    --grid-cs: 9
1067+  }
1068+
1069+  r-grid>r-cell[span-l^="10"] {
1070+    --grid-cs: 10
1071+  }
1072+
1073+  r-grid>r-cell[span-l^="11"] {
1074+    --grid-cs: 11
1075+  }
1076+
1077+  r-grid>r-cell[span-l^="12"] {
1078+    --grid-cs: 12
1079+  }
1080+
1081+  r-grid>r-cell[span-l^="13"] {
1082+    --grid-cs: 13
1083+  }
1084+
1085+  r-grid>r-cell[span-l^="14"] {
1086+    --grid-cs: 14
1087+  }
1088+
1089+  r-grid>r-cell[span-l^="15"] {
1090+    --grid-cs: 15
1091+  }
1092+
1093+  r-grid>r-cell[span-l^="16"] {
1094+    --grid-cs: 16
1095+  }
1096+
1097+  r-grid>r-cell[span-l^="17"] {
1098+    --grid-cs: 17
1099+  }
1100+
1101+  r-grid>r-cell[span-l^="18"] {
1102+    --grid-cs: 18
1103+  }
1104+
1105+  r-grid>r-cell[span-l^="19"] {
1106+    --grid-cs: 19
1107+  }
1108+
1109+  r-grid>r-cell[span-l^="20"] {
1110+    --grid-cs: 20
1111+  }
1112+
1113+  r-grid>r-cell[span-l^="21"] {
1114+    --grid-cs: 21
1115+  }
1116+
1117+  r-grid>r-cell[span-l^="22"] {
1118+    --grid-cs: 22
1119+  }
1120+
1121+  r-grid>r-cell[span-l^="23"] {
1122+    --grid-cs: 23
1123+  }
1124+
1125+  r-grid>r-cell[span-l^="24"] {
1126+    --grid-cs: 24
1127+  }
1128+
1129+  r-grid>r-cell[span-l^="25"] {
1130+    --grid-cs: 25
1131+  }
1132+
1133+  r-grid>r-cell[span-l^="26"] {
1134+    --grid-cs: 26
1135+  }
1136+
1137+  r-grid>r-cell[span-l^="27"] {
1138+    --grid-cs: 27
1139+  }
1140+
1141+  r-grid>r-cell[span-l^="28"] {
1142+    --grid-cs: 28
1143+  }
1144+
1145+  r-grid>r-cell[span-l^="29"] {
1146+    --grid-cs: 29
1147+  }
1148+
1149+  r-grid>r-cell[span-l^="30"] {
1150+    --grid-cs: 30
1151+  }
1152+
1153+  r-grid>r-cell[span-l$="+1"],
1154+  r-grid>r-cell[span-l="1"] {
1155+    --grid-ce: 1
1156+  }
1157+
1158+  r-grid>r-cell[span-l$="+2"],
1159+  r-grid>r-cell[span-l$="-1"],
1160+  r-grid>r-cell[span-l="2"] {
1161+    --grid-ce: 2
1162+  }
1163+
1164+  r-grid>r-cell[span-l$="+3"],
1165+  r-grid>r-cell[span-l$="-2"],
1166+  r-grid>r-cell[span-l="3"] {
1167+    --grid-ce: 3
1168+  }
1169+
1170+  r-grid>r-cell[span-l$="+4"],
1171+  r-grid>r-cell[span-l$="-3"],
1172+  r-grid>r-cell[span-l="4"] {
1173+    --grid-ce: 4
1174+  }
1175+
1176+  r-grid>r-cell[span-l$="+5"],
1177+  r-grid>r-cell[span-l$="-4"],
1178+  r-grid>r-cell[span-l="5"] {
1179+    --grid-ce: 5
1180+  }
1181+
1182+  r-grid>r-cell[span-l$="+6"],
1183+  r-grid>r-cell[span-l$="-5"],
1184+  r-grid>r-cell[span-l="6"] {
1185+    --grid-ce: 6
1186+  }
1187+
1188+  r-grid>r-cell[span-l$="+7"],
1189+  r-grid>r-cell[span-l$="-6"],
1190+  r-grid>r-cell[span-l="7"] {
1191+    --grid-ce: 7
1192+  }
1193+
1194+  r-grid>r-cell[span-l$="+8"],
1195+  r-grid>r-cell[span-l$="-7"],
1196+  r-grid>r-cell[span-l="8"] {
1197+    --grid-ce: 8
1198+  }
1199+
1200+  r-grid>r-cell[span-l$="+9"],
1201+  r-grid>r-cell[span-l$="-8"],
1202+  r-grid>r-cell[span-l="9"] {
1203+    --grid-ce: 9
1204+  }
1205+
1206+  r-grid>r-cell[span-l$="+10"],
1207+  r-grid>r-cell[span-l$="-9"],
1208+  r-grid>r-cell[span-l="10"] {
1209+    --grid-ce: 10
1210+  }
1211+
1212+  r-grid>r-cell[span-l$="+11"],
1213+  r-grid>r-cell[span-l$="-10"],
1214+  r-grid>r-cell[span-l="11"] {
1215+    --grid-ce: 11
1216+  }
1217+
1218+  r-grid>r-cell[span-l$="+12"],
1219+  r-grid>r-cell[span-l$="-11"],
1220+  r-grid>r-cell[span-l="12"] {
1221+    --grid-ce: 12
1222+  }
1223+
1224+  r-grid>r-cell[span-l$="+13"],
1225+  r-grid>r-cell[span-l$="-12"],
1226+  r-grid>r-cell[span-l="13"] {
1227+    --grid-ce: 13
1228+  }
1229+
1230+  r-grid>r-cell[span-l$="+14"],
1231+  r-grid>r-cell[span-l$="-13"],
1232+  r-grid>r-cell[span-l="14"] {
1233+    --grid-ce: 14
1234+  }
1235+
1236+  r-grid>r-cell[span-l$="+15"],
1237+  r-grid>r-cell[span-l$="-14"],
1238+  r-grid>r-cell[span-l="15"] {
1239+    --grid-ce: 15
1240+  }
1241+
1242+  r-grid>r-cell[span-l$="+16"],
1243+  r-grid>r-cell[span-l$="-15"],
1244+  r-grid>r-cell[span-l="16"] {
1245+    --grid-ce: 16
1246+  }
1247+
1248+  r-grid>r-cell[span-l$="+17"],
1249+  r-grid>r-cell[span-l$="-16"],
1250+  r-grid>r-cell[span-l="17"] {
1251+    --grid-ce: 17
1252+  }
1253+
1254+  r-grid>r-cell[span-l$="+18"],
1255+  r-grid>r-cell[span-l$="-17"],
1256+  r-grid>r-cell[span-l="18"] {
1257+    --grid-ce: 18
1258+  }
1259+
1260+  r-grid>r-cell[span-l$="+19"],
1261+  r-grid>r-cell[span-l$="-18"],
1262+  r-grid>r-cell[span-l="19"] {
1263+    --grid-ce: 19
1264+  }
1265+
1266+  r-grid>r-cell[span-l$="+20"],
1267+  r-grid>r-cell[span-l$="-19"],
1268+  r-grid>r-cell[span-l="20"] {
1269+    --grid-ce: 20
1270+  }
1271+
1272+  r-grid>r-cell[span-l$="+21"],
1273+  r-grid>r-cell[span-l$="-20"],
1274+  r-grid>r-cell[span-l="21"] {
1275+    --grid-ce: 21
1276+  }
1277+
1278+  r-grid>r-cell[span-l$="+22"],
1279+  r-grid>r-cell[span-l$="-21"],
1280+  r-grid>r-cell[span-l="22"] {
1281+    --grid-ce: 22
1282+  }
1283+
1284+  r-grid>r-cell[span-l$="+23"],
1285+  r-grid>r-cell[span-l$="-22"],
1286+  r-grid>r-cell[span-l="23"] {
1287+    --grid-ce: 23
1288+  }
1289+
1290+  r-grid>r-cell[span-l$="+24"],
1291+  r-grid>r-cell[span-l$="-23"],
1292+  r-grid>r-cell[span-l="24"] {
1293+    --grid-ce: 24
1294+  }
1295+
1296+  r-grid>r-cell[span-l$="+25"],
1297+  r-grid>r-cell[span-l$="-24"],
1298+  r-grid>r-cell[span-l="25"] {
1299+    --grid-ce: 25
1300+  }
1301+
1302+  r-grid>r-cell[span-l$="+26"],
1303+  r-grid>r-cell[span-l$="-25"],
1304+  r-grid>r-cell[span-l="26"] {
1305+    --grid-ce: 26
1306+  }
1307+
1308+  r-grid>r-cell[span-l$="+27"],
1309+  r-grid>r-cell[span-l$="-26"],
1310+  r-grid>r-cell[span-l="27"] {
1311+    --grid-ce: 27
1312+  }
1313+
1314+  r-grid>r-cell[span-l$="+28"],
1315+  r-grid>r-cell[span-l$="-27"],
1316+  r-grid>r-cell[span-l="28"] {
1317+    --grid-ce: 28
1318+  }
1319+
1320+  r-grid>r-cell[span-l$="+29"],
1321+  r-grid>r-cell[span-l$="-28"],
1322+  r-grid>r-cell[span-l="29"] {
1323+    --grid-ce: 29
1324+  }
1325+
1326+  r-grid>r-cell[span-l$="+30"],
1327+  r-grid>r-cell[span-l$="-29"],
1328+  r-grid>r-cell[span-l="30"] {
1329+    --grid-ce: 30
1330+  }
1331+
1332+  r-grid>r-cell[span-l$="-30"] {
1333+    --grid-ce: 31
1334+  }
1335+
1336+  r-grid>r-cell[span-l] {
1337+    grid-column-end: span var(--grid-ce)
1338+  }
1339+
1340+  r-grid>r-cell[span-l*="+"],
1341+  r-grid>r-cell[span-l*="-"],
1342+  r-grid>r-cell[span-l*=".."] {
1343+    grid-column-start: var(--grid-cs)
1344+  }
1345+
1346+  r-grid>r-cell[span-l*="-"],
1347+  r-grid>r-cell[span-l*=".."] {
1348+    grid-column-end: var(--grid-ce)
1349+  }
1350+
1351+  r-grid>r-cell[span-l=row] {
1352+    grid-column: 1/-1
1353+  }
1354 }
1355\ No newline at end of file
1356diff --git a/template.index.html b/template.index.html
1357index d7a1590..d591780 100644
1358--- a/template.index.html
1359+++ b/template.index.html
1360@@ -20,44 +20,44 @@
1361     </div>
1362     <div class="index">
1363       <div class="metadata">
1364-        <table>
1365-          <thead>
1366-            <tr>
1367-              <td class="name"><b>Name</b></td>
1368-              <td class="description"><b>Description</b></td>
1369-              <td><b>Git</b></td>
1370-            </tr>
1371-          </thead>
1372-          <tbody>
1373-            {{ range .Repos }}
1374-            <tr>
1375-              <td class="name">
1376-                <a href="{{ $.HeadData.BaseURL }}{{ .Name }}/log.html">
1377-                  {{ .Name }}
1378-                </a>
1379-              </td>
1380-              <td class="description">
1381-                <div>{{ .Description }}</div>
1382-              </td>
1383-              <td>
1384-                <div>
1385-                  {{ if .HostGit }}
1386-                  <a href="{{ .BaseURL }}{{ .Name }}.git">
1387-                    {{ .BaseURL }}{{ .Name }}.git
1388-                  </a>
1389-                  {{ else if not (eq .PublishedGitURL "") }}
1390-                  <a href="{{ .PublishedGitURL }}">
1391-                    {{ .PublishedGitURL }}
1392-                  </a>
1393-                  {{ else }}
1394-                  <em>none</em>
1395-                  {{ end }}
1396-                </div>
1397-              </td>
1398-            </tr>
1399-            {{ end }}
1400-          </tbody>
1401-        </table>
1402+        <r-grid columns="12">
1403+          <r-cell span="2">
1404+            <b>Name</b>
1405+          </r-cell>
1406+          <r-cell span="7">
1407+            <b>Description</b>
1408+          </r-cell>
1409+          <r-cell span="3">
1410+            <b>Git</b>
1411+          </r-cell>
1412+
1413+          {{ range .Repos }}
1414+          <r-cell span="2">
1415+            <a href="{{ $.HeadData.BaseURL }}{{ .Name }}/log.html">
1416+              {{ .Name }}
1417+            </a>
1418+          </r-cell>
1419+          <r-cell span="7">
1420+            <div>{{ .Description }}</div>
1421+          </r-cell>
1422+          <r-cell span="3">
1423+            <div>
1424+              {{ if .HostGit }}
1425+              <a href="{{ .BaseURL }}{{ .Name }}.git">
1426+                {{ .BaseURL }}{{ .Name }}.git
1427+              </a>
1428+              {{ else if not (eq .PublishedGitURL "") }}
1429+              <a href="{{ .PublishedGitURL }}">
1430+                {{ .PublishedGitURL }}
1431+              </a>
1432+              {{ else }}
1433+              <em>none</em>
1434+              {{ end }}
1435+            </div>
1436+          </r-cell>
1437+          {{ end }}
1438+        </r-grid>
1439+
1440       </div>
1441     </div>
1442   </div>