Index: templates/macros.cs
===================================================================
--- templates/macros.cs	(revision 1705)
+++ templates/macros.cs	(working copy)
@@ -133,39 +133,47 @@
  each c=ticket.custom ?>
   <div class="field custom_<?cs var c.name ?>"><?cs
    if c.type == 'text' ?>
-    <label>
-     <?cs alt c.label ?><?cs var c.name ?><?cs /alt ?>:
-     <input type="text" name="custom_<?cs var c.name ?>" value="<?cs var c.value ?>" />
-    </label><?cs
+    <label for="custom_<?cs var c.name ?>">
+     <?cs alt c.label ?><?cs var c.name ?><?cs /alt ?>:</label>
+     <input type="text" name="custom_<?cs var c.name ?>"
+      id="custom_<?cs var c.name ?>" value="<?cs var c.value ?>" />
+    <?cs
    elif c.type == 'textarea' ?>
-    <label>
-     <?cs alt c.label ?><?cs var c.name ?><?cs /alt ?>:<br />
-     <textarea cols="<?cs alt c.width ?>60<?cs /alt ?>" rows="<?cs
+    <label for="custom_<?cs var c.name ?>">
+     <?cs alt c.label ?><?cs var c.name ?><?cs /alt ?>:<br /></label>
+     <textarea id="custom_<?cs var c.name ?>"
+       cols="<?cs alt c.width ?>60<?cs /alt ?>" rows="<?cs
        alt c.height ?>12<?cs /alt ?>" name="custom_<?cs var c.name ?>"><?cs
        var c.value ?></textarea>
-    </label><?cs
+    <?cs
    elif c.type == 'checkbox' ?>
     <input type="hidden" name="checkbox_<?cs var c.name ?>" />
-    <label>
-     <input type="checkbox" name="custom_<?cs var c.name ?>" value="1"<?cs
+    <label for="custom_<?cs var c.name ?>">&nbsp;</label>
+     <input type="checkbox" name="custom_<?cs var c.name ?>" 
+       id="custom_<?cs var c.name ?>" value="1"<?cs
        if c.selected ?> checked="checked"<?cs /if ?> />
      <?cs alt c.label ?><?cs var c.name ?><?cs /alt ?>
-    </label><?cs
+    <?cs
    elif c.type == 'select' ?>
-    <label>
-     <?cs alt c.label ?><?cs var c.name ?><?cs /alt ?>:
-     <select name="custom_<?cs var c.name ?>"><?cs each v = c.option ?>
+    <label for="custom_<?cs var c.name ?>">
+     <?cs alt c.label ?><?cs var c.name ?><?cs /alt ?>:</label>
+     <select name="custom_<?cs var c.name ?>" 
+      id="custom_<?cs var c.name ?>"><?cs each v = c.option ?>
       <option<?cs if v.selected ?> selected="selected"<?cs /if ?>><?cs
         var v ?></option><?cs /each ?>
      </select>
-    </label><?cs
+    <?cs
    elif c.type == 'radio' ?>
-    <fieldset class="radio">
-     <legend><?cs alt c.label ?><?cs var c.name ?><?cs /alt ?>:</legend><?cs
+    <label for="custom_<?cs var c.name ?>"><?cs alt c.label ?><?cs var
+     c.name ?><?cs /alt ?>:</label>
+    <fieldset class="radio" id="custom_<?cs var c.name ?>"><?cs
      each v = c.option ?>
-      <label><input type="radio" name="custom_<?cs var c.name ?>" value="<?cs
+      <label for="custom_<?cs var c.name ?>_<?cs var v ?>">
+       <input type="radio" id="custom_<?cs var c.name ?>_<?cs var v ?>"
+         name="custom_<?cs var c.name ?>" value="<?cs
          var v ?>"<?cs if v.selected ?> checked="checked"<?cs /if ?> /> <?cs
-         var v ?></label><?cs
+         var v ?>
+      </label><?cs
      /each ?>
     </fieldset><?cs
    /if ?>
Index: htdocs/css/ticket.css
===================================================================
--- htdocs/css/ticket.css	(revision 1705)
+++ htdocs/css/ticket.css	(working copy)
@@ -64,12 +64,22 @@
  width: 45%;
 }
 #properties .col2 { margin-left: 40% }
-#properties .main label, #properties .col1 label, #properties .col2 label {
- float:left;
- width: 7em;
+#properties .main label, #properties .col1 label, #properties .col2 label,
+#properties .custom .field label { 
+ float: left;
+ width: 9em;
  text-align: right;
  margin-right: .5em;
 }
+
+#properties .custom .field fieldset.radio label { 
+ width: auto;
+}
+
+#properties .custom .field fieldset.custom_radio { 
+ border: none;
+}
+
 #properties .custom {
  clear: left;
  border-top: 1px dotted #d7d7d7;

