diff -urN v147/honeywell6160_web/CHANGELOG.md v148/honeywell6160_web/CHANGELOG.md
--- v147/honeywell6160_web/CHANGELOG.md	2026-09-12 02:26:25.000000000 +0000
+++ v148/honeywell6160_web/CHANGELOG.md	2026-09-18 22:35:57.557652561 +0000
@@ -1,3 +1,10 @@
+## v1.4.8 — Delta Patch: Touch auth flow + UtilitarianWave
+- TouchCenter DISARM no longer performs a one-tap disarm; it now opens Console Mode and requires a valid code entry.
+- TouchCenter arming buttons now honor code-entry arming unless Quick Arm is enabled; when Quick Arm is enabled they still act as quick-arm buttons.
+- Added a pending TouchCenter auth flow that routes arm/disarm through Console Mode.
+- Message Center overlay now uses the requested count/header wording and shows a no-message placeholder or a formatted message row.
+- Applied the UtilitarianWave UI pass: Arimo-first font stack, squared corners, and gradient-free browser UI chrome.
+
 ## v1.4.7 — TouchCenter console / Message Center / lighting / armed-state repair
 
 - Console Mode now uses the original 320×240 SWF console face and invisible native-coordinate key hit regions instead of a browser-generated 3×4 button grid.
diff -urN v147/honeywell6160_web/TOUCHCENTER_6270_6271CV_AUDIT_v1.4.8.md v148/honeywell6160_web/TOUCHCENTER_6270_6271CV_AUDIT_v1.4.8.md
--- v147/honeywell6160_web/TOUCHCENTER_6270_6271CV_AUDIT_v1.4.8.md	1970-01-01 00:00:00.000000000 +0000
+++ v148/honeywell6160_web/TOUCHCENTER_6270_6271CV_AUDIT_v1.4.8.md	2026-09-18 22:35:57.557713121 +0000
@@ -0,0 +1,7 @@
+# TouchCenter 6270 / 6271CV Audit v1.4.8
+
+- Converted TouchCenter arm/disarm interactions into a code-authenticated flow.
+- DISARM now routes through Console Mode instead of executing on a single tap.
+- AWAY/STAY/NIGHT route through Console Mode unless Quick Arm is enabled, in which case they remain quick-arm actions.
+- Message Center formatting was tightened to match the requested layout and empty-state wording.
+- Applied the UtilitarianWave browser-UI pass: Arimo-first font stack, square corners, and no CSS gradients.
diff -urN v147/honeywell6160_web/app.js v148/honeywell6160_web/app.js
--- v147/honeywell6160_web/app.js	2026-09-12 02:26:10.000000000 +0000
+++ v148/honeywell6160_web/app.js	2026-09-18 22:35:57.556845688 +0000
@@ -1480,7 +1480,7 @@
     const [x,y,w,h]=keyLayout[key];return {left:(x-7)/389*100,top:(y-22)/328*100,width:w/389*100,height:h/328*100};
   }
 
-  const TOUCH_REV='1.4.7';
+  const TOUCH_REV='1.4.8';
   const TOUCH_PAGE_LABELS={
     home:'Home',security:'Security',messages:'Messages',lights:'Lighting',more:'More Choices',console:'Console Mode',events:'Event Logs',zones:'Zones',modes:'Operating Modes',setup:'Setup'
   };
@@ -1554,7 +1554,7 @@
     const consoleKeys=`<div class="touch-console-hotspots">${touchHotKey('1',82,57,63,42)}${touchHotKey('2',150,57,63,42)}${touchHotKey('3',218,57,63,42)}${touchHotKey('4',82,101,63,42)}${touchHotKey('5',150,101,63,42)}${touchHotKey('6',218,101,63,42)}${touchHotKey('7',82,145,63,42)}${touchHotKey('8',150,145,63,42)}${touchHotKey('9',218,145,63,42)}${touchHotKey('*',82,189,63,42,'Star / Ready')}${touchHotKey('0',150,189,63,42)}${touchHotKey('#',218,189,63,42,'Pound')}</div>`;
     const page=kp.touchPage||'home';
     const shellHotspots=model==='6270'?`<button class="touch-shell-hotspot hs-home" data-touch-action="touch-home" aria-label="Home"></button><button class="touch-shell-hotspot hs-func" data-touch-action="page-more" aria-label="Function"></button><button class="touch-shell-hotspot hs-panic" data-touch-action="emergency-panic" aria-label="Panic"></button><button class="touch-shell-hotspot hs-back" data-touch-action="touch-back" aria-label="Back"></button>`:'';
-    return `<div class="aux-kp-wrap kp${model}"><img class="touch-shell-image" src="${touchAsset(model,'shell')}" alt="Honeywell ${model==='6271cv'?'6271CV':'6270'} TouchCenter" draggable="false"><span class="touch-shell-led led-armed"></span><span class="touch-shell-led led-ready"></span><span class="touch-shell-led led-message"></span>${shellHotspots}<div class="touch-screen" data-touch-page="${page}"><div class="touch-page-stack"><section class="touch-page touch-source-home" data-page="home">${homeSource}</section><section class="touch-page touch-source-security" data-page="security">${securitySource}</section><section class="touch-page touch-source-more" data-page="more">${moreSource}</section><section class="touch-page touch-source-utility touch-message-center" data-page="messages"><img class="touch-page-bg" src="${touchAsset(model,'message-center-bg')}" alt="" draggable="false"><div class="touch-armed-status-bg"></div><div class="touch-source-status"></div><div class="touch-message-count"></div><div class="touch-message-list"></div>${is6271?touchPositionedButton(model,'home','touch-home','Home',sg.home):''}${is6271?touchPositionedButton(model,'back','touch-back','Back',sg.back):''}${touchHotAction('message-play',151,149,57,31,'Play message')}${touchHotAction('message-delete',58,181,57,28,'Delete message')}${touchHotAction('message-stop',151,181,57,28,'Stop')}${touchHotAction('message-record',243,181,57,28,'Record message')}</section><section class="touch-page touch-source-utility touch-lighting-page" data-page="lights"><div class="touch-source-flat-bg"></div>${sourceHeader}<div class="touch-light-grid"><div class="light-cell garage"><span>Garage Door</span>${activate}</div><div class="light-cell basement"><span>Basement<br>Light</span>${on}${off}</div><div class="light-cell porch"><span>Porch Light</span>${on}${off}</div><div class="light-cell backyard"><span>Backyard<br>Light</span>${on}${off}</div></div>${sourceFooter}</section><section class="touch-page touch-source-utility touch-console-page" data-page="console"><img class="touch-page-bg" src="${touchAsset(model,'console-bg')}" alt="" draggable="false">${consoleKeys}</section><section class="touch-page touch-source-utility" data-page="events"><div class="touch-source-flat-bg"></div>${sourceHeader}<img class="touch-event-source-bg" src="${touchAsset(model,is6271?'event-log-clean':'event-log-bg')}" alt="" draggable="false"><div class="touch-event-header"><span class="touch-event-showing"></span><span class="touch-event-total"></span></div><div class="touch-event-list"></div></section><section class="touch-page touch-source-utility" data-page="zones"><div class="touch-source-flat-bg"></div>${sourceHeader}<div class="touch-zone-list touch-source-data-overlay"></div><div class="touch-page-footer touch-zones-footer">${refresh}</div>${sourceFooter}</section><section class="touch-page touch-source-utility" data-page="modes"><div class="touch-source-flat-bg"></div>${sourceHeader}<div class="touch-mode-list touch-source-data-overlay"></div>${sourceFooter}</section><section class="touch-page touch-source-utility" data-page="setup"><div class="touch-source-flat-bg"></div>${sourceHeader}<div class="touch-setup-list touch-source-data-overlay"></div>${sourceFooter}</section></div></div><div class="aux-disabled" hidden>KEYPAD ADDRESS<br>DISABLED IN PANEL</div></div>`;
+    return `<div class="aux-kp-wrap kp${model}"><img class="touch-shell-image" src="${touchAsset(model,'shell')}" alt="Honeywell ${model==='6271cv'?'6271CV':'6270'} TouchCenter" draggable="false"><span class="touch-shell-led led-armed"></span><span class="touch-shell-led led-ready"></span><span class="touch-shell-led led-message"></span>${shellHotspots}<div class="touch-screen" data-touch-page="${page}"><div class="touch-page-stack"><section class="touch-page touch-source-home" data-page="home">${homeSource}</section><section class="touch-page touch-source-security" data-page="security">${securitySource}</section><section class="touch-page touch-source-more" data-page="more">${moreSource}</section><section class="touch-page touch-source-utility touch-message-center" data-page="messages"><img class="touch-page-bg" src="${touchAsset(model,'message-center-bg')}" alt="" draggable="false"><div class="touch-armed-status-bg"></div><div class="touch-source-status"></div><div class="touch-message-count"></div><div class="touch-message-list"></div>${is6271?touchPositionedButton(model,'home','touch-home','Home',sg.home):''}${is6271?touchPositionedButton(model,'back','touch-back','Back',sg.back):''}${touchHotAction('message-play',151,149,57,31,'Play message')}${touchHotAction('message-delete',58,181,57,28,'Delete message')}${touchHotAction('message-stop',151,181,57,28,'Stop')}${touchHotAction('message-record',243,181,57,28,'Record message')}</section><section class="touch-page touch-source-utility touch-lighting-page" data-page="lights"><div class="touch-source-flat-bg"></div>${sourceHeader}<div class="touch-light-grid"><div class="light-cell garage"><span>Garage Door</span>${activate}</div><div class="light-cell basement"><span>Basement<br>Light</span>${on}${off}</div><div class="light-cell porch"><span>Porch Light</span>${on}${off}</div><div class="light-cell backyard"><span>Backyard<br>Light</span>${on}${off}</div></div>${sourceFooter}</section><section class="touch-page touch-source-utility touch-console-page" data-page="console"><img class="touch-page-bg" src="${touchAsset(model,'console-bg')}" alt="" draggable="false"><div class="touch-console-caption"></div>${consoleKeys}</section><section class="touch-page touch-source-utility" data-page="events"><div class="touch-source-flat-bg"></div>${sourceHeader}<img class="touch-event-source-bg" src="${touchAsset(model,is6271?'event-log-clean':'event-log-bg')}" alt="" draggable="false"><div class="touch-event-header"><span class="touch-event-showing"></span><span class="touch-event-total"></span></div><div class="touch-event-list"></div></section><section class="touch-page touch-source-utility" data-page="zones"><div class="touch-source-flat-bg"></div>${sourceHeader}<div class="touch-zone-list touch-source-data-overlay"></div><div class="touch-page-footer touch-zones-footer">${refresh}</div>${sourceFooter}</section><section class="touch-page touch-source-utility" data-page="modes"><div class="touch-source-flat-bg"></div>${sourceHeader}<div class="touch-mode-list touch-source-data-overlay"></div>${sourceFooter}</section><section class="touch-page touch-source-utility" data-page="setup"><div class="touch-source-flat-bg"></div>${sourceHeader}<div class="touch-setup-list touch-source-data-overlay"></div>${sourceFooter}</section></div></div><div class="aux-disabled" hidden>KEYPAD ADDRESS<br>DISABLED IN PANEL</div></div>`;
   }
   function touchNowString(){return new Date().toLocaleTimeString(undefined,{hour:'2-digit',minute:'2-digit'});}
   function touchSourceDateString(){return new Date().toLocaleString(undefined,{month:'numeric',day:'numeric',year:'2-digit',hour:'2-digit',minute:'2-digit'});}
@@ -1589,6 +1589,8 @@
     view.touchRoot.querySelector('.touch-source-security')?.classList.toggle('armed-state',!!(st.arming||st.armed));
     if(view.clock)view.clock.textContent=touchNowString();
     view.touchRoot.querySelectorAll('.touch-source-status').forEach(el=>el.textContent=touchSourceStatusString());
+    const consoleCaption=view.touchRoot.querySelector('.touch-console-caption');
+    if(consoleCaption)consoleCaption.textContent=touchPendingPrompt(kp);
     view.touchRoot.querySelectorAll('.touch-source-date').forEach(el=>el.textContent=touchSourceDateString());
     view.shellArmed?.classList.toggle('is-on',!!(st.power&&!st.startup&&(st.armed||st.arming)));
     view.shellReady?.classList.toggle('is-on',!!(st.power&&!st.startup&&!st.programming&&!st.armed&&!st.arming&&st.ready));
@@ -1603,8 +1605,22 @@
     if(view.messageList){
       view.messageList.replaceChildren();
       const msg=voiceMessageFor(kp.id), count=msg?1:0, countEl=view.touchRoot.querySelector('.touch-message-count');
-      if(countEl)countEl.textContent=`Message Center - ${count} message(s)`;
-      if(msg){const row=document.createElement('div');row.className='touch-message-entry';const d=new Date(msg.createdAt||Date.now());row.textContent=`New  1  ${d.toLocaleDateString()} ${d.toLocaleTimeString([], {hour:'numeric',minute:'2-digit',second:'2-digit'})}`;view.messageList.appendChild(row);}
+      if(countEl)countEl.textContent=`Message Center - ${count}message(s)`;
+      if(msg){
+        const row=document.createElement('div');
+        row.className='touch-message-entry';
+        const d=new Date(msg.createdAt||Date.now());
+        const dateStr=`${d.getMonth()+1}/${d.getDate()}/${String(d.getFullYear()).slice(-2)}`;
+        const timeStr=d.toLocaleTimeString([], {hour:'numeric',minute:'2-digit',second:'2-digit'});
+        const seconds=Math.max(1,Math.round(((msg.durationMs??msg.duration??5000))/1000));
+        row.textContent=`New  1  ${dateStr} ${timeStr} (${seconds} Sec)`;
+        view.messageList.appendChild(row);
+      }else{
+        const row=document.createElement('div');
+        row.className='touch-message-entry touch-message-empty';
+        row.textContent='No messages or central-station events.';
+        view.messageList.appendChild(row);
+      }
     }
     if(view.eventList){
       view.eventList.replaceChildren();const items=monitoringEvents.slice(0,6),total=monitoringEvents.length;
@@ -1629,6 +1645,23 @@
     if(!st.activeAlarm.has(zone)&&zoneCfg(zone).type!==0)alarm(zone,kind==='fire'?'fire':zoneCfg(zone).type===14?'co':'burg');
   }
   const touchPageHistory=new Map();
+  const touchPendingAuth=new Map();
+  function clearTouchPendingAuth(keypadId){
+    if(keypadId!=null)touchPendingAuth.delete(keypadId);
+  }
+  function beginTouchPendingAuth(kp,kind,mode=null){
+    if(!kp)return;
+    touchPendingAuth.set(kp.id,{kind,mode,page:kp.touchPage||'security'});
+    resetInput();
+    navigateTouchPage(kp,'console');
+  }
+  function touchPendingPrompt(kp){
+    const pending=kp?touchPendingAuth.get(kp.id):null;
+    if(!pending)return '';
+    if(pending.kind==='disarm')return 'Enter code to disarm';
+    const label={away:'Away',stay:'Stay',night:'Night',max:'Maximum',instant:'Instant'}[pending.mode]||'arm';
+    return `Enter code to arm ${label.toLowerCase()}`;
+  }
   function navigateTouchPage(kp,page,{clearHistory=false}={}){
     if(!kp)return;
     const current=kp.touchPage||'home';
@@ -1651,21 +1684,21 @@
     if(!kp)return;
     const pageMap={'page-home':'home','page-security':'security','page-messages':'messages','page-lights':'lights','page-more':'more','page-console':'console','page-events':'events','page-zones':'zones','page-modes':'modes','page-setup':'setup'};
     if(action==='touch-home'){
-      if(!keypadEnabled(kp))return;touchActionBeep(kp);navigateTouchPage(kp,'home',{clearHistory:true});return;
+      if(!keypadEnabled(kp))return;touchActionBeep(kp);clearTouchPendingAuth(kp.id);navigateTouchPage(kp,'home',{clearHistory:true});return;
     }
     if(action==='touch-back'){
-      if(!keypadEnabled(kp))return;touchActionBeep(kp);touchGoBack(kp);return;
+      if(!keypadEnabled(kp))return;touchActionBeep(kp);clearTouchPendingAuth(kp.id);touchGoBack(kp);return;
     }
     if(pageMap[action]){
-      if(!keypadEnabled(kp))return;touchActionBeep(kp);navigateTouchPage(kp,pageMap[action]);return;
+      if(!keypadEnabled(kp))return;touchActionBeep(kp);if(pageMap[action]!=='console')clearTouchPendingAuth(kp.id);navigateTouchPage(kp,pageMap[action]);return;
     }
     if(!keypadEnabled(kp)&&!['monitoring-center'].includes(action))return;
     touchActionBeep(kp);
     if(action==='armed-mode-block'){playAck('single',kp.id);return;}
-    if(action==='arm-away'){arm('away',{keypadId:kp.id});return;}
-    if(action==='arm-stay'){arm('stay',{keypadId:kp.id});return;}
-    if(action==='arm-night'){arm('night',{keypadId:kp.id});return;}
-    if(action==='disarm'){disarm({keypadId:kp.id});return;}
+    if(action==='arm-away'){if(config.quickArm)arm('away',{keypadId:kp.id});else beginTouchPendingAuth(kp,'arm','away');return;}
+    if(action==='arm-stay'){if(config.quickArm)arm('stay',{keypadId:kp.id});else beginTouchPendingAuth(kp,'arm','stay');return;}
+    if(action==='arm-night'){if(config.quickArm)arm('night',{keypadId:kp.id});else beginTouchPendingAuth(kp,'arm','night');return;}
+    if(action==='disarm'){beginTouchPendingAuth(kp,'disarm');return;}
     if(action==='show-faults'){showFaults();return;}
     if(action==='enter-bypass'){enterBypass();navigateTouchPage(kp,'console');render();return;}
     if(action==='bypass-all'){if(!quickBypassFaultedZones())temporaryDisplay(config.quickBypass?'NO FAULTED ZONES':'ENABLE *23 QUICK BYP','',1500);return;}
@@ -2546,6 +2579,7 @@
   function exitWalkTest(){clearWalkTestTimers();st.test=false;st.testMenu=false;}
 
   function disarm({clearMemory=false,user=null,keypadId=st.lastInputKeypadId||selectedKeypadId}={}){
+    clearTouchPendingAuth(keypadId);
     const hadArmedState=!!(st.armed||st.arming||st.entryDelay||st.exitDelay||st.activeAlarm.size||st.fire||st.co);
     const hadMemory=st.alarmMemory.size>0;
     // A second valid OFF while already disarmed and only alarm memory remains
@@ -3473,6 +3507,25 @@
 
     st.input=(st.input+k).slice(-32);clearTimeout(st.inputTimer);st.inputTimer=setTimeout(resetInput,4000);
 
+    const pendingTouchAuth=touchPendingAuth.get(keypadId);
+    if(pendingTouchAuth&&st.input.length>=4){
+      const code=st.input.slice(-4),u=userForCode(code);
+      if(u){
+        clearTouchPendingAuth(keypadId);
+        if(pendingTouchAuth.kind==='disarm'){
+          if(!canDisarmWith(u)){codeError('DISARM DENIED');return;}
+          transmitDuress(u,'DISARM');
+          queuePanelResponse('disarm',p=>{const hadMemory=st.alarmMemory.size>0&&!st.activeAlarm.size&&!st.fire;disarm({clearMemory:hadMemory,user:u,keypadId:p.keypadId});},{keypadId});
+          return;
+        }
+        if(!canArmWith(u)){codeError('ARM DENIED');return;}
+        const mode=pendingTouchAuth.mode||'stay';
+        transmitDuress(u,{away:'ARM AWAY',stay:'ARM STAY',night:'ARM NIGHT',max:'ARM MAXIMUM',instant:'ARM INSTANT'}[mode]||'ARM');
+        queuePanelResponse(mode==='stay'?'arm-stay':'arm',p=>arm(p.mode||mode,{userSlot:u.slot,keypadId:p.keypadId}),{mode,userSlot:u.slot,keypadId});
+        return;
+      }
+    }
+
     // 6160V local controls live in the keypad itself.
     // #01 record; RECORD [1] ends recording. #03 plays the stored message.
     // #02 followed by 3/6 changes both message and status volume; #024 toggles Voice Chime.
diff -urN v147/honeywell6160_web/index.html v148/honeywell6160_web/index.html
--- v147/honeywell6160_web/index.html	2026-09-12 02:26:25.000000000 +0000
+++ v148/honeywell6160_web/index.html	2026-09-18 22:36:27.891443051 +0000
@@ -4,7 +4,7 @@
   <meta charset="utf-8">
   <meta name="viewport" content="width=device-width, initial-scale=1">
   <title>Vista Emulator DELUXE — VISTA-20P / 6150 / 6160 / 6160V / 6270 / 6271CV</title>
-  <link rel="stylesheet" href="style.css?v=1.4.7">
+  <link rel="stylesheet" href="style.css?v=1.4.8">
 </head>
 <body>
   <div id="jonnyGate" class="start-gate jonny-gate" role="dialog" aria-modal="true" aria-label="Gaming With Jonny project notice" hidden>
@@ -21,7 +21,7 @@
 
   <div id="startGate" class="start-gate" role="dialog" aria-modal="true" aria-labelledby="startTitle">
     <div class="start-card">
-      <div class="start-kicker">VISTA-20P / 6150 / 6160 / 6160V / 6270 / 6271CV · PUBLIC RELEASE v1.4.7</div>
+      <div class="start-kicker">VISTA-20P / 6150 / 6160 / 6160V / 6270 / 6271CV · PUBLIC RELEASE v1.4.8</div>
       <div class="deluxe-brand" aria-label="Vista Emulator DELUXE"><span class="deluxe-brand-name">Vista Emulator</span><strong>DELUXE</strong></div>
       <h1 id="startTitle">Start Vista Emulator DELUXE</h1>
       <p>Browsers block automatic audio until the page receives a user gesture. Starting here unlocks keypad audio and begins the panel's real power-up sequence.</p>
@@ -68,7 +68,7 @@
       <section class="status-panel">
         <div class="status-head">
           <div>
-            <div class="runtime-brand"><span class="runtime-brand-title">Vista Emulator <b>DELUXE</b></span><span class="runtime-brand-meta">VISTA-20P · 6150 · 6160 · 6160V · 6270 · 6271CV · v1.4.7</span></div>
+            <div class="runtime-brand"><span class="runtime-brand-title">Vista Emulator <b>DELUXE</b></span><span class="runtime-brand-meta">VISTA-20P · 6150 · 6160 · 6160V · 6270 · 6271CV · v1.4.8</span></div>
             <div id="stateText">Power-up</div>
           </div>
           <div class="toolbar">
@@ -193,12 +193,12 @@
     </div>
     <div class="changelog-scroll">
       <article class="release-entry current deluxe-release">
-        <h3>v1.4.7 — TouchCenter event-log collision repair</h3>
+        <h3>v1.4.8 — Touch auth flow + UtilitarianWave</h3>
         <ul>
-          <li>HOME and BACK now behave as actual navigation controls instead of both aliasing the Arming screen.</li>
-          <li>Added a source-derived Home screen using the recovered SECURITY, LIGHTING, and MESSAGE controls.</li>
-          <li>Matched the live status field to the SWF ArmStatus definition: Arial 20 px, centered, with the original native field geometry.</li>
-          <li>Corrected the normal status wording to <code>Ready To Arm</code>.</li>
+          <li>TouchCenter <strong>DISARM</strong> no longer disarms on a single tap; it now routes through Console Mode and requires a valid user code.</li>
+          <li>TouchCenter <strong>AWAY / STAY / NIGHT</strong> now require a valid user code unless Quick Arm is enabled, in which case they continue to operate as quick-arm controls.</li>
+          <li>Message Center formatting and empty-state wording were tightened to match the requested screen behavior.</li>
+          <li>Applied the UtilitarianWave browser-UI pass: Arimo-first typography, squared corners, and no CSS gradients in the emulator chrome.</li>
         </ul>
         <h3>v1.4.4 — Source-frame fidelity</h3>
         <ul>
diff -urN v147/honeywell6160_web/style.css v148/honeywell6160_web/style.css
--- v147/honeywell6160_web/style.css	2026-09-12 02:26:09.000000000 +0000
+++ v148/honeywell6160_web/style.css	2026-09-18 22:35:57.557530671 +0000
@@ -1,5 +1,6 @@
+@import url("https://fonts.googleapis.com/css2?family=Arimo:wght@400;700&display=swap");
 @font-face{font-family:"LCD Display";src:url("assets/fonts/lcd-display-font/lcd-display.otf.woff2") format("woff2");font-style:normal;font-weight:400;font-display:block}
-:root{font-family:Arial,Helvetica,sans-serif;color-scheme:dark}
+:root{font-family:Arimo,Arial,Helvetica,sans-serif;color-scheme:dark}
 *{box-sizing:border-box}
 html,body{margin:0;min-height:100%;background:#111;color:#eee}
 body{display:block;padding:12px}
@@ -338,7 +339,7 @@
   position:relative;width:100%;aspect-ratio:4/3;min-height:0;overflow:hidden;
   padding:5px;background:#f4f4f2;border:2px solid #686b6e;border-radius:3px;
   display:grid;grid-template-rows:17px 34px 48px 1fr 30px;gap:3px;
-  color:#111;font-family:Arial,Helvetica,sans-serif;box-shadow:inset 0 0 0 1px #fff;
+  color:#111;font-family:Arimo,Arial,Helvetica,sans-serif;box-shadow:inset 0 0 0 1px #fff;
 }
 .kp6271cv .touch-screen{background:#19548f;border-color:#081d32;color:#f6ee54;box-shadow:inset 0 0 0 1px #5fa0d455}
 .touch-screen button{margin:0!important;padding:0!important;border:0!important;background:transparent!important;border-radius:0!important;box-shadow:none!important;min-width:0!important;min-height:0!important;color:inherit!important}
@@ -451,7 +452,7 @@
 .kp6270 .touch-screen,.kp6271cv .touch-screen{
   position:absolute!important;inset:auto!important;display:block!important;padding:0!important;margin:0!important;
   border:0!important;border-radius:0!important;box-shadow:none!important;overflow:hidden!important;
-  aspect-ratio:auto!important;background:transparent!important;z-index:4;font-family:Arial,Helvetica,sans-serif;
+  aspect-ratio:auto!important;background:transparent!important;z-index:4;font-family:Arimo,Arial,Helvetica,sans-serif;
 }
 .kp6270 .touch-screen{left:19.92551%!important;top:12.41535%!important;width:59.59032%!important;height:54.17607%!important}
 .kp6271cv .touch-screen{left:18.29026%!important;top:15.51724%!important;width:63.61829%!important;height:68.96552%!important}
@@ -464,10 +465,10 @@
 .touch-source-positioned img{display:block!important;width:100%!important;height:100%!important;max-width:none!important;max-height:none!important;object-fit:fill!important;pointer-events:none!important}
 .touch-source-positioned:focus-visible{outline:1px solid #fff!important;outline-offset:-2px!important}
 .touch-source-clock-icon{position:absolute;left:90.625%;top:89.16667%;width:9.375%;height:10.83333%;display:block;object-fit:fill;z-index:2;pointer-events:none}
-.touch-source-status{position:absolute;z-index:3;display:block;text-align:center;white-space:nowrap;overflow:hidden;color:#090909;font-family:Arial,Helvetica,sans-serif;font-weight:400;pointer-events:none;box-sizing:border-box}
+.touch-source-status{position:absolute;z-index:3;display:block;text-align:center;white-space:nowrap;overflow:hidden;color:#090909;font-family:Arimo,Arial,Helvetica,sans-serif;font-weight:400;pointer-events:none;box-sizing:border-box}
 .kp6271cv .touch-source-status{left:13.21875%;top:.14583%;width:73.75%;height:12.35417%;font-size:20px;line-height:29.65px}
 .kp6270 .touch-source-status{left:13.21875%;top:.14583%;width:73.75%;height:12.35417%;font-size:20px;line-height:29.65px;font-weight:400}
-.touch-source-date{position:absolute;z-index:3;pointer-events:none;white-space:nowrap;overflow:hidden;font-family:Arial,Helvetica,sans-serif}
+.touch-source-date{position:absolute;z-index:3;pointer-events:none;white-space:nowrap;overflow:hidden;font-family:Arimo,Arial,Helvetica,sans-serif}
 .kp6271cv .touch-source-date{left:1.3%;bottom:1.3%;max-width:48%;height:6%;color:#e7ff35;font-size:6px;font-weight:700;line-height:1}
 .kp6270 .touch-source-date{display:none}
 
@@ -548,7 +549,7 @@
 .touch-source-utility .touch-source-positioned{z-index:6!important}
 .touch-event-source-bg{position:absolute;left:0;top:34px;width:100%;height:auto;z-index:2;pointer-events:none;object-fit:contain;image-rendering:auto}
 .kp6270 .touch-event-source-bg{top:37px}
-.touch-source-data-overlay{position:absolute!important;left:4%!important;right:4%!important;top:27%!important;bottom:16%!important;z-index:4!important;margin:0!important;padding:3px!important;overflow:auto!important;box-sizing:border-box!important;border:0!important;background:rgba(255,255,255,.88)!important;color:#111!important;font-family:Arial,Helvetica,sans-serif!important}
+.touch-source-data-overlay{position:absolute!important;left:4%!important;right:4%!important;top:27%!important;bottom:16%!important;z-index:4!important;margin:0!important;padding:3px!important;overflow:auto!important;box-sizing:border-box!important;border:0!important;background:rgba(255,255,255,.88)!important;color:#111!important;font-family:Arimo,Arial,Helvetica,sans-serif!important}
 .kp6271cv .touch-source-data-overlay{background:rgba(7,72,124,.90)!important;color:#fff!important}
 .touch-source-data-overlay .touch-list-row,.touch-source-data-overlay .touch-list-empty,.touch-source-data-overlay .touch-zone-row,.touch-source-data-overlay .touch-mode-card{font-size:7px!important;line-height:1.15!important;padding:2px 3px!important;border-radius:0!important}
 .touch-source-data-overlay .touch-list-row strong,.touch-source-data-overlay .touch-zone-row strong,.touch-source-data-overlay .touch-mode-card strong{font-size:7px!important}
@@ -586,7 +587,7 @@
    generic footer controls, the clock/date footer, or a translucent browser
    list on top of the source event-log frame. */
 .kp6271cv .touch-source-status{
-  font-family:"Arial Narrow",Arial,Helvetica,sans-serif!important;
+  font-family:Arimo,Arial,Helvetica,sans-serif!important;
   font-size:16px!important;
   line-height:32px!important;
   font-weight:400!important;
@@ -600,19 +601,19 @@
 .touch-source-utility[data-page="events"] .touch-event-header{
   position:absolute!important;left:8px!important;right:6px!important;top:36px!important;height:18px!important;
   z-index:5!important;display:flex!important;align-items:center!important;justify-content:space-between!important;
-  color:#191919!important;font-family:"Arial Narrow",Arial,Helvetica,sans-serif!important;font-size:10px!important;
+  color:#191919!important;font-family:Arimo,Arial,Helvetica,sans-serif!important;font-size:10px!important;
   font-weight:700!important;line-height:18px!important;white-space:nowrap!important;pointer-events:none!important;
 }
 .touch-source-utility[data-page="events"] .touch-event-list{
   position:absolute!important;left:8px!important;right:6px!important;top:56px!important;height:123px!important;
   z-index:5!important;margin:0!important;padding:0!important;overflow:hidden!important;background:transparent!important;
-  color:#f9f919!important;font-family:"Arial Narrow",Arial,Helvetica,sans-serif!important;font-size:10px!important;
+  color:#f9f919!important;font-family:Arimo,Arial,Helvetica,sans-serif!important;font-size:10px!important;
   font-weight:400!important;line-height:17px!important;pointer-events:none!important;
 }
 .touch-source-utility[data-page="events"] .touch-event-list .touch-list-row{
   display:block!important;height:17px!important;min-height:17px!important;box-sizing:border-box!important;
   margin:0!important;padding:0 1px!important;border:0!important;border-radius:0!important;background:transparent!important;
-  color:#f9f919!important;font:400 10px/17px "Arial Narrow",Arial,Helvetica,sans-serif!important;
+  color:#f9f919!important;font:400 10px/17px Arimo,Arial,Helvetica,sans-serif!important;
   white-space:nowrap!important;overflow:hidden!important;text-overflow:clip!important;
 }
 .touch-source-utility[data-page="events"] .touch-page-footer,
@@ -631,7 +632,7 @@
 .touch-security-armed-panel{display:none;position:absolute;inset:0;z-index:3;background:#23639d}
 .touch-source-security.armed-state .touch-security-armed-panel{display:block}
 .touch-security-armed-panel .touch-source-positioned{z-index:5!important}
-.touch-armed-copy{position:absolute;left:44%;top:24%;width:48%;z-index:4;color:#050505;font-family:Arial,Helvetica,sans-serif;font-size:10px;line-height:1.2;display:flex;flex-direction:column;gap:2px}
+.touch-armed-copy{position:absolute;left:44%;top:24%;width:48%;z-index:4;color:#050505;font-family:Arimo,Arial,Helvetica,sans-serif;font-size:10px;line-height:1.2;display:flex;flex-direction:column;gap:2px}
 .touch-lock-glyph{position:absolute;left:8.5%;top:27%;width:9px;height:10px;background:#626a6e;border:1px solid #1d272d;border-radius:1px;z-index:4;box-sizing:border-box}
 .touch-lock-glyph:before{content:"";position:absolute;left:1px;top:-7px;width:5px;height:7px;border:2px solid #92999d;border-bottom:0;border-radius:5px 5px 0 0;box-sizing:border-box}
 
@@ -644,15 +645,15 @@
 /* Message Center uses the native SWF frame. Only dynamic message text is overlaid. */
 .touch-message-center .touch-page-bg{z-index:1}
 .touch-message-center .touch-source-status{z-index:4}
-.touch-message-count{position:absolute;left:1.3%;top:17.5%;width:97%;height:8%;z-index:4;color:#fff;font:700 8px Arial,Helvetica,sans-serif;text-align:center;line-height:18px;pointer-events:none}
+.touch-message-count{position:absolute;left:1.3%;top:17.5%;width:97%;height:8%;z-index:4;color:#fff;font:700 8px Arimo,Arial,Helvetica,sans-serif;text-align:center;line-height:18px;pointer-events:none}
 .touch-message-center .touch-message-list{position:absolute!important;left:16%!important;top:28%!important;width:81%!important;height:28%!important;right:auto!important;bottom:auto!important;z-index:4!important;margin:0!important;padding:4px 3px!important;overflow:hidden!important;background:transparent!important;border:0!important;color:#fff!important;box-sizing:border-box!important}
-.touch-message-entry{font:8px Arial,Helvetica,sans-serif;line-height:1.2;white-space:nowrap;color:#fff}
+.touch-message-entry{font:8px Arimo,Arial,Helvetica,sans-serif;line-height:1.2;white-space:nowrap;color:#fff}
 .touch-transparent-hotspot{position:absolute;z-index:6;margin:0;padding:0;border:0;background:transparent;box-shadow:none;cursor:pointer}
 .touch-transparent-hotspot:focus-visible{outline:1px dashed rgba(255,255,255,.85);outline-offset:-2px}
 
 /* Lighting screen reconstructed from the SWF layout shown by the real 6271CV. */
 .touch-lighting-page .touch-source-flat-bg{background:#08477b!important}
-.touch-light-grid{position:absolute;left:2%;right:2%;top:27%;bottom:17%;z-index:4;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:repeat(3,1fr);gap:1px;font-family:Arial,Helvetica,sans-serif;color:#fff16e}
+.touch-light-grid{position:absolute;left:2%;right:2%;top:27%;bottom:17%;z-index:4;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:repeat(3,1fr);gap:1px;font-family:Arimo,Arial,Helvetica,sans-serif;color:#fff16e}
 .light-cell{position:relative;border:1px solid #e3de91;display:flex;align-items:center;gap:2px;padding:1px 3px;box-sizing:border-box;font-size:7px;font-weight:700;overflow:hidden}
 .light-cell.garage{grid-column:1;grid-row:1}.light-cell.basement{grid-column:2;grid-row:1}.light-cell.porch{grid-column:1;grid-row:2}.light-cell.backyard{grid-column:1;grid-row:3}
 .light-cell span{margin-left:auto;margin-right:2px;text-align:center;line-height:1.05}
@@ -667,4 +668,35 @@
 .touch-source-utility[data-page="zones"] .touch-zones-footer{left:auto!important;right:4%!important;width:38%!important}
 
 /* The source UI uses a restrained header font; prevent the browser from scaling it into billboard text. */
-.kp6271cv .touch-source-status{font-family:Arial Narrow,Arial,Helvetica,sans-serif!important;font-size:16px!important;line-height:30px!important}
+.kp6271cv .touch-source-status{font-family:Arimo,Arial,Helvetica,sans-serif!important;font-size:16px!important;line-height:30px!important}
+
+
+/* v1.4.8 — touch auth flow + UtilitarianWave pass. */
+button,input,select,textarea,.start-card,.jonny-card,.status-panel,.aux-card,.toolbar-select select,.changelog,.modal-card{
+  border-radius:0 !important;
+}
+button,input,select,textarea,.start-card,.jonny-card,.status-panel,.aux-card{
+  background-image:none !important;
+}
+.touch-armed-status-bg{border-radius:0 !important}
+.touch-console-caption{
+  position:absolute;left:27%;right:14%;top:4%;height:19%;z-index:4;
+  display:flex;align-items:center;justify-content:center;
+  color:#35f35d;font:700 9px/1 Arimo,Arial,Helvetica,sans-serif;
+  text-align:center;pointer-events:none;text-transform:uppercase;letter-spacing:.02em;
+}
+.kp6270 .touch-console-caption{color:#121212}
+.touch-message-count{
+  font:700 8px Arimo,Arial,Helvetica,sans-serif !important;
+}
+.touch-message-entry{
+  display:block;background:#0c4e88;border:1px solid #2c6798;padding:2px 6px;
+  color:#fff16e;font:8px/1.2 Arimo,Arial,Helvetica,sans-serif;
+}
+.touch-message-entry + .touch-message-entry{margin-top:2px}
+.touch-message-empty{color:#fff16e}
+.touch-light-grid{font-family:Arimo,Arial,Helvetica,sans-serif !important}
+.touch-armed-copy{font-family:Arimo,Arial,Helvetica,sans-serif !important}
+.kp6271cv .touch-source-status,.kp6270 .touch-source-status{
+  font-family:Arimo,Arial,Helvetica,sans-serif !important;
+}
