135 minutes. Two clear formats.

HTML for this example

Select the code and use your copy shortcut. Changes in this preview are temporary.

<!doctype html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="color-scheme" content="light"><title>135 minutes. Two clear formats.</title><style>*{box-sizing:border-box}body{margin:0;background:var(--bg,#f2f5f4);color:#203039;font:16px/1.55 system-ui,-apple-system,Segoe UI,sans-serif;--accent:#24635b;--soft:#e1eeea}main{max-width:1000px;margin:auto;padding:32px}header{padding-bottom:20px;border-bottom:1px solid #becbc8;margin-bottom:22px}.eyebrow{font-size:12px;font-weight:750;letter-spacing:.13em;text-transform:uppercase;color:var(--accent)}h1{font-size:clamp(28px,4.7vw,44px);line-height:1.12;letter-spacing:-.045em;margin:10px 0 14px;max-width:830px}h2{font-size:22px;line-height:1.25;margin:0 0 16px}h3{font-size:17px;margin:0 0 9px}p{margin:8px 0 12px}header p{font-size:18px;max-width:760px}.fiction{font-size:13px;color:#52636a;display:block;margin-top:12px}.paper,.panel{background:#fff;border:1px solid #c5d1cf;border-radius:12px;padding:24px;min-width:0}.pair{display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:start}.trio{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.note{border-left:4px solid var(--accent);padding:16px 20px;background:var(--soft);margin:18px 0}.note p:last-child{margin-bottom:0}.muted,small{color:#52636a;font-size:14px}.actions{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0}button{font:inherit;font-weight:650;min-height:44px;border:1px solid #81958f;background:#fff;color:#203039;padding:9px 15px;border-radius:7px;cursor:pointer}button:hover{background:var(--soft)}button[aria-pressed=true],#check{background:var(--accent);color:#fff;border-color:var(--accent)}button:disabled{opacity:.55;cursor:default}button:focus-visible,select:focus-visible,input:focus-visible,summary:focus-visible,a:focus-visible{outline:3px solid #b96000;outline-offset:3px}label{display:block;font-size:14px;font-weight:700;margin:12px 0 6px}select,input{font:inherit;width:100%;min-height:44px;border:1px solid #81958f;border-radius:6px;padding:9px;background:#fff;color:#203039;min-width:0}input[type=checkbox]{width:20px;min-height:20px}.feedback{padding:14px 18px;background:var(--soft);border-radius:8px;min-height:53px}.large{font-size:clamp(36px,6vw,60px);font-weight:750;line-height:1.1;letter-spacing:-.05em}.metric{padding:22px;background:var(--accent);color:#fff;border-radius:12px}.metric small{color:#fff}.metric p{margin:8px 0 0}.metric.secondary{background:#e1e9e7;color:#203039}.metric.secondary small{color:#384f4b}.agenda{border-top:1px solid #becbc8;margin-top:28px;padding-top:24px}.agenda h2 span{float:right;font:14px system-ui;color:#52636a}.agenda ol{padding:0;list-style:none}.agenda li{display:grid;grid-template-columns:65px 1fr 48px;gap:16px;border-bottom:1px solid #d5dfdc;padding:14px 0}.agenda p{margin-bottom:0;font-size:14px}.time{color:var(--accent);font-variant-numeric:tabular-nums}svg{width:100%;height:auto;display:block}svg text{font-family:system-ui,sans-serif;fill:#203039}figure{margin:0}figcaption{font-size:14px;margin-top:12px}table{width:100%;border-collapse:collapse;font-size:14px;margin:14px 0}th,td{padding:12px 10px;text-align:left;border-bottom:1px solid #d2dcd9;vertical-align:top;overflow-wrap:anywhere}th{background:var(--soft);font-size:12px;text-transform:uppercase;letter-spacing:.035em}.mobile-label{display:none}.blank{padding:16px 0;border-bottom:1px dashed #879992;color:#52636a}.view{margin:16px 0}[hidden]{display:none!important}details{border-top:1px solid #bccac5;padding:15px 0;margin-top:18px}summary{cursor:pointer;font-weight:700;min-height:44px}a{color:var(--accent)}footer{border-top:1px solid #bdcbc6;padding-top:18px;margin-top:30px;font-size:13px;color:#52636a}.tag{display:inline-block;padding:3px 8px;font-size:12px;background:var(--soft);border-radius:4px;font-weight:700}.formula{font-family:ui-monospace,Consolas,monospace;background:#eaf0ed;padding:15px;border-radius:6px;overflow-wrap:anywhere}.strip{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0}.strip span{border:1px solid #bccac5;border-radius:5px;padding:6px 10px;font-size:14px}.scene{background:#fbf7ed;padding:20px;border-radius:12px}.sentence{font:clamp(23px,4vw,34px)/1.5 Georgia,serif;padding:20px 0}.accent{color:var(--accent);font-weight:750}.bar{height:18px;background:#e2e9e6;border-radius:4px;overflow:hidden}.bar span{display:block;height:100%;background:var(--accent)}.path{font-size:17px;line-height:1.8;padding:16px;background:#fff;border:1px solid #bccac5;border-radius:8px;overflow-wrap:anywhere}.diagram-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.node{padding:15px;background:var(--soft);border:1px solid #8ea79d;border-radius:10px;font-weight:700}.study{padding:14px;background:#fff;border-bottom:3px solid var(--accent)}.study svg{height:86px}.studio{--bg:#f6f1e6;--accent:#78502d;--soft:#efe3cf}.studio h1{font-family:Georgia,serif;font-weight:500}.stage{--bg:#f0edf4;--accent:#654378;--soft:#e8def0}.rhythm{--bg:#eef2fa;--accent:#3c4d86;--soft:#e4e9f8}.rhythm-grid{display:grid;grid-template-columns:85px repeat(4,1fr);gap:4px;margin:14px 0}.rhythm-grid>*{padding:13px 6px;text-align:center;background:#fff;border:1px solid #c8d1e4}.rhythm-grid .changed{background:#f5dfa0;font-weight:750}.beat{font-size:22px}.position{background:#eef1f0;border-radius:8px;padding:20px}.tokens{display:flex;flex-wrap:wrap;gap:8px;min-height:60px}.ordered{padding:18px;border:2px dashed #91a699;border-radius:8px;min-height:82px;margin:18px 0;font-size:24px}.parcel-row{display:grid;grid-template-columns:repeat(6,1fr);gap:8px}.parcel-row button{padding:10px 3px;font-size:12px}.parcel-row svg{height:64px;margin:0 auto 6px}.ribbon{padding:12px 0;display:grid;grid-template-columns:65px 1fr 58px;gap:12px;align-items:center}.ribbon .bar{height:27px;border-radius:0;background:transparent}.ribbon .bar span{background:#718e66}.ribbon:nth-child(2) .bar span{background:#8868a5}.ribbon:nth-child(3) .bar span{background:#3f7f99}.cell-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.cell{border:2px solid #90aaba;border-radius:50%;padding:20px;background:#f3f8fb;text-align:center;min-height:115px}.chromosome{display:inline-block;padding:4px;margin:4px;color:#254f73;border:1px solid #90aaba;border-radius:8px;font-size:15px;font-weight:700}.codons{display:flex;gap:8px;flex-wrap:wrap}.codon{border:1px solid #a9bab2;background:#fff;border-radius:8px;padding:12px;text-align:center;min-width:80px}.codon.current{border:3px solid var(--accent);padding:10px}.codon b{font:28px ui-monospace,monospace;letter-spacing:.12em}.periodic{display:grid;grid-template-columns:65px repeat(3,1fr);gap:8px;align-items:stretch;margin:16px 0}.element{padding:12px!important;background:#eaf1ed}.element strong{display:block;font-size:44px}.element small{display:block}.omitted{border:1px dashed #94a89e;padding:15px;color:#52636a;font-size:13px}.receipt{border-top:5px solid var(--accent);background:#fff;padding:28px}.number-list{font-variant-numeric:tabular-nums}.travel{--bg:#edf4f6;--accent:#235d76;--soft:#dfeef3}.travel .timetable{border-left:5px solid var(--accent);background:#fff;padding:20px}.readiness{display:grid;grid-template-columns:140px 1fr;gap:8px 18px}.readiness dt{font-size:13px;font-weight:700}.readiness dd{margin:0;padding-bottom:10px;border-bottom:1px solid #d6dfda}.request-card{border:1px solid #bfd0c7;background:#fff;border-left:5px solid var(--accent);padding:20px;margin:16px 0}.grid-form{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}@media(max-width:720px){main{padding:22px}.pair{gap:14px}.paper,.panel{padding:18px}.trio{grid-template-columns:1fr}.grid-form{grid-template-columns:1fr}.readiness{grid-template-columns:115px 1fr}.rhythm-grid>*{padding:12px 3px;font-size:13px}.beat{font-size:19px}}@media(max-width:520px){main{padding:16px}.pair{grid-template-columns:1fr}.agenda li{grid-template-columns:48px 1fr 38px;gap:8px}.agenda h2 span{float:none;display:block;margin-top:8px}.parcel-row{gap:4px}.parcel-row button{font-size:10px;min-width:0}.parcel-row svg{height:46px}.periodic{grid-template-columns:40px repeat(3,1fr);gap:4px}.periodic button{font-size:12px;padding:8px 3px!important}.periodic .element strong{font-size:34px}.periodic small{font-size:11px}.periodic .omitted{padding:10px 5px;font-size:11px}thead{display:none}table,tbody,tr,td{display:block;width:100%}tr{border-bottom:1px solid #bdcec5;padding:8px 0}td{border:0;padding:7px 4px}.mobile-label{display:block;font-size:11px;font-weight:750;color:#52636a}.cell{padding:12px}.cell-grid{gap:8px}.readiness{grid-template-columns:1fr;gap:3px}.rhythm-grid{grid-template-columns:65px repeat(4,1fr);gap:2px}.rhythm-grid>*{font-size:11px;padding:12px 2px}.ribbon{grid-template-columns:57px 1fr 48px;gap:6px}}@media print{main{max-width:none;padding:0}body{background:#fff}button,.actions{display:none}.view[hidden]{display:block!important}.paper{break-inside:avoid}}</style></head><body class=""><main><header><span class="eyebrow">Duration converter · nonnegative whole minutes</span><h1>135 minutes. Two clear formats.</h1><p>135 ÷ 60 = 2.25 decimal hours. The same duration is 2 hours 15 minutes. Decimal .25 means a quarter of an hour, not 25 minutes.</p><span class="fiction">Original illustrative example · local review copy; not an official record</span></header><section class="paper"><label for="minutes">Total duration in whole minutes</label><input id="minutes" type="text" inputmode="numeric" value="135" aria-describedby="input-help"><p id="input-help" class="muted">Duration, not clock time. Whole minutes only. Values above 24 hours do not wrap.</p><div class="actions"><button data-preset="90">90 minutes</button><button data-preset="135">135 minutes</button><button data-preset="0">Zero</button><button data-preset="1500">1,500 minutes</button><button id="clear">Clear</button></div><div class="pair"><div class="metric"><small>Decimal hours · rounded to 2 decimals</small><p id="decimal" class="large">2.25</p><p>hours</p></div><div class="metric secondary"><small>Whole hours + remaining minutes</small><p id="duration" class="large" style="font-size:36px">2 h 15 m</p><p>Same duration</p></div></div><p id="feedback" class="feedback" role="status"></p><p id="formula" class="formula"></p></section><aside class="note"><strong>1.30 is a different decimal duration</strong><p>1.30 decimal hours × 60 = 78 minutes.<br>1 hour 30 minutes = 90 minutes = 1.5 decimal hours.<br>Neither is a clock reading such as 1:30 p.m.</p></aside><table><thead><tr><th scope="col">Minutes</th><th scope="col">Decimal hours</th><th scope="col">Hours/minutes</th></tr></thead><tbody><tr><td><span class="mobile-label">Minutes</span>90</td><td><span class="mobile-label">Decimal hours</span>1.5</td><td><span class="mobile-label">Hours/minutes</span>1 hour 30 minutes</td></tr><tr><td><span class="mobile-label">Minutes</span>135</td><td><span class="mobile-label">Decimal hours</span>2.25</td><td><span class="mobile-label">Hours/minutes</span>2 hours 15 minutes</td></tr><tr><td><span class="mobile-label">Minutes</span>0</td><td><span class="mobile-label">Decimal hours</span>0</td><td><span class="mobile-label">Hours/minutes</span>0 hours 0 minutes</td></tr><tr><td><span class="mobile-label">Minutes</span>1,500</td><td><span class="mobile-label">Decimal hours</span>25</td><td><span class="mobile-label">Hours/minutes</span>25 hours 0 minutes</td></tr></tbody></table><p class="muted">Full calculation precision is retained before display formatting. Display rounding does not decide billing or payroll rules.</p><footer>Changes and practice answers last only on this page. Keep actual observations, decisions and records in your established school, document or spreadsheet workflow.</footer></main><script>const $=id=>document.getElementById(id);const esc=s=>String(s).replace(/[&<>"']/g,c=>({'&':'&amp;','<':'&lt;','>':'&gt;','"':'&quot;',"'":'&#39;'}[c]));const status=s=>{$('feedback').textContent=s;};
function convert(raw){if(raw.trim()==='')return {error:'Enter minutes. Blank is different from zero.'};if(!/^\d+$/.test(raw.trim()))return {error:'Use nonnegative whole minutes, not negative/fractional values or 1:30.'};const minutes=Number(raw.trim());if(!Number.isSafeInteger(minutes))return {error:'Duration exceeds the exact whole-number range.'};return {minutes,hours:minutes/60,whole:Math.floor(minutes/60),remainder:minutes%60};}function render(){const r=convert($('minutes').value);$('minutes').setAttribute('aria-invalid',String(Boolean(r.error)));if(r.error){$('decimal').textContent='—';$('duration').textContent='—';$('formula').textContent='No conversion performed.';status(r.error);return;}$('decimal').textContent=r.hours.toFixed(2);$('duration').textContent=r.whole+' h '+r.remainder+' m';$('formula').textContent=r.minutes+' ÷ 60 = '+r.hours+' hours before display rounding; '+r.minutes+' − '+r.whole+' × 60 = '+r.remainder+' remaining minutes.';status('Converted '+r.minutes+' whole minutes. Decimal display is rounded to two decimals.');}$('minutes').addEventListener('input',render);document.querySelectorAll('[data-preset]').forEach(b=>b.addEventListener('click',()=>{$('minutes').value=b.dataset.preset;render();}));$('clear').addEventListener('click',()=>{$('minutes').value='';render();$('minutes').focus();});globalThis.Model={convert};render();</script></body></html>