ams-redesign.html 44 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>AMS Section Redesign Mockup</title>
  7. <link rel="preconnect" href="https://fonts.googleapis.com">
  8. <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  9. <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap" rel="stylesheet">
  10. <style>
  11. :root {
  12. /* Match actual Bambuddy dark theme */
  13. --bg-page: #121218;
  14. --bg-card: #1a1a22;
  15. --bg-section: #22222a;
  16. --bg-input: #2a2a32;
  17. --border-color: #333340;
  18. --text-primary: #ffffff;
  19. --text-secondary: #9ca3af;
  20. --text-muted: #6b7280;
  21. --bambu-green: #00ae42;
  22. --bambu-green-bg: rgba(0, 174, 66, 0.2);
  23. --humidity-good: #00ae42;
  24. --humidity-fair: #f59e0b;
  25. --humidity-bad: #ef4444;
  26. }
  27. * {
  28. margin: 0;
  29. padding: 0;
  30. box-sizing: border-box;
  31. }
  32. body {
  33. font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
  34. background: var(--bg-page);
  35. color: var(--text-primary);
  36. min-height: 100vh;
  37. padding: 24px;
  38. }
  39. .page-header {
  40. margin-bottom: 24px;
  41. }
  42. .page-title {
  43. font-size: 18px;
  44. font-weight: 600;
  45. color: var(--text-primary);
  46. margin-bottom: 4px;
  47. }
  48. .page-subtitle {
  49. font-size: 13px;
  50. color: var(--text-muted);
  51. }
  52. /* Printer Card - matches actual app */
  53. .printer-card {
  54. background: var(--bg-card);
  55. border: 1px solid var(--border-color);
  56. border-radius: 12px;
  57. padding: 16px;
  58. width: 340px;
  59. }
  60. /* Card Header */
  61. .card-header {
  62. display: flex;
  63. align-items: flex-start;
  64. gap: 12px;
  65. margin-bottom: 8px;
  66. }
  67. .printer-image {
  68. width: 56px;
  69. height: 56px;
  70. border-radius: 8px;
  71. background: var(--bg-section);
  72. flex-shrink: 0;
  73. display: flex;
  74. align-items: center;
  75. justify-content: center;
  76. overflow: hidden;
  77. }
  78. .printer-image svg {
  79. width: 40px;
  80. height: 40px;
  81. color: var(--text-muted);
  82. }
  83. .printer-details {
  84. flex: 1;
  85. min-width: 0;
  86. }
  87. .printer-name-row {
  88. display: flex;
  89. align-items: center;
  90. justify-content: space-between;
  91. }
  92. .printer-name {
  93. font-size: 18px;
  94. font-weight: 600;
  95. color: var(--text-primary);
  96. }
  97. .menu-btn {
  98. width: 24px;
  99. height: 24px;
  100. border: none;
  101. background: transparent;
  102. color: var(--text-secondary);
  103. cursor: pointer;
  104. display: flex;
  105. align-items: center;
  106. justify-content: center;
  107. border-radius: 4px;
  108. }
  109. .menu-btn:hover {
  110. background: var(--bg-section);
  111. }
  112. .printer-model {
  113. font-size: 14px;
  114. color: var(--text-secondary);
  115. margin-top: 2px;
  116. }
  117. /* Badges row */
  118. .badges-row {
  119. display: flex;
  120. flex-wrap: wrap;
  121. gap: 6px;
  122. margin-bottom: 16px;
  123. }
  124. .badge {
  125. display: inline-flex;
  126. align-items: center;
  127. gap: 4px;
  128. padding: 4px 8px;
  129. border-radius: 9999px;
  130. font-size: 12px;
  131. font-weight: 500;
  132. }
  133. .badge-green {
  134. background: var(--bambu-green-bg);
  135. color: var(--bambu-green);
  136. }
  137. .badge svg {
  138. width: 12px;
  139. height: 12px;
  140. }
  141. /* Status Section */
  142. .status-section {
  143. background: var(--bg-section);
  144. border-radius: 8px;
  145. padding: 12px;
  146. margin-bottom: 12px;
  147. }
  148. .status-row {
  149. display: flex;
  150. gap: 12px;
  151. }
  152. .cover-placeholder {
  153. width: 72px;
  154. height: 72px;
  155. border-radius: 8px;
  156. background: var(--bg-input);
  157. flex-shrink: 0;
  158. display: flex;
  159. align-items: center;
  160. justify-content: center;
  161. }
  162. .cover-placeholder svg {
  163. width: 32px;
  164. height: 32px;
  165. color: var(--text-muted);
  166. }
  167. .status-info {
  168. flex: 1;
  169. min-width: 0;
  170. }
  171. .status-label {
  172. font-size: 14px;
  173. color: var(--text-secondary);
  174. margin-bottom: 2px;
  175. }
  176. .status-value {
  177. font-size: 14px;
  178. color: var(--text-primary);
  179. margin-bottom: 8px;
  180. }
  181. .progress-bar {
  182. height: 8px;
  183. background: var(--bg-input);
  184. border-radius: 4px;
  185. margin-bottom: 8px;
  186. }
  187. .progress-fill {
  188. height: 100%;
  189. background: var(--bambu-green);
  190. border-radius: 4px;
  191. }
  192. .ready-text {
  193. font-size: 12px;
  194. color: var(--text-secondary);
  195. }
  196. /* Temperature Grid */
  197. .temp-grid {
  198. display: grid;
  199. grid-template-columns: repeat(3, 1fr);
  200. gap: 8px;
  201. margin-bottom: 12px;
  202. }
  203. .temp-card {
  204. background: var(--bg-section);
  205. border-radius: 8px;
  206. padding: 8px;
  207. text-align: center;
  208. }
  209. .temp-icon {
  210. width: 16px;
  211. height: 16px;
  212. margin: 0 auto 4px;
  213. }
  214. .temp-label {
  215. font-size: 11px;
  216. color: var(--text-secondary);
  217. margin-bottom: 2px;
  218. }
  219. .temp-value {
  220. font-size: 14px;
  221. color: var(--text-primary);
  222. font-weight: 500;
  223. }
  224. /* AMS Section */
  225. .ams-section {
  226. margin-top: 12px;
  227. }
  228. /* Current stacked layout */
  229. .ams-stacked {
  230. display: flex;
  231. flex-direction: column;
  232. gap: 8px;
  233. }
  234. .ams-row {
  235. display: flex;
  236. align-items: center;
  237. gap: 12px;
  238. background: var(--bg-section);
  239. border-radius: 8px;
  240. padding: 8px 10px;
  241. }
  242. .ams-icon-wrapper {
  243. flex-shrink: 0;
  244. }
  245. .filament-info {
  246. flex: 1;
  247. min-width: 0;
  248. }
  249. .ams-label {
  250. font-size: 11px;
  251. font-weight: 500;
  252. color: var(--text-muted);
  253. }
  254. .filament-types {
  255. font-size: 10px;
  256. color: var(--text-secondary);
  257. margin-top: 1px;
  258. white-space: nowrap;
  259. overflow: hidden;
  260. text-overflow: ellipsis;
  261. }
  262. .filament-fills {
  263. font-size: 9px;
  264. color: var(--text-muted);
  265. margin-top: 1px;
  266. }
  267. .ams-stats {
  268. display: flex;
  269. align-items: center;
  270. gap: 8px;
  271. flex-shrink: 0;
  272. }
  273. .stat {
  274. display: flex;
  275. align-items: center;
  276. gap: 3px;
  277. font-size: 11px;
  278. font-weight: 500;
  279. }
  280. .stat svg {
  281. width: 12px;
  282. height: 12px;
  283. }
  284. .stat-good { color: var(--humidity-good); }
  285. .stat-fair { color: var(--humidity-fair); }
  286. .stat-bad { color: var(--humidity-bad); }
  287. .stat-neutral { color: var(--text-secondary); }
  288. /* Smart plug section */
  289. .smart-plug-section {
  290. margin-top: 16px;
  291. padding-top: 16px;
  292. border-top: 1px solid var(--border-color);
  293. }
  294. .plug-row {
  295. display: flex;
  296. align-items: center;
  297. gap: 8px;
  298. }
  299. .plug-icon {
  300. width: 16px;
  301. height: 16px;
  302. color: var(--text-secondary);
  303. }
  304. .plug-name {
  305. font-size: 14px;
  306. color: var(--text-primary);
  307. }
  308. .plug-badge {
  309. font-size: 11px;
  310. padding: 2px 6px;
  311. border-radius: 4px;
  312. font-weight: 500;
  313. }
  314. .plug-badge.on {
  315. background: var(--bambu-green-bg);
  316. color: var(--bambu-green);
  317. }
  318. .plug-power {
  319. font-size: 12px;
  320. color: #facc15;
  321. font-weight: 500;
  322. }
  323. .plug-controls {
  324. margin-left: auto;
  325. display: flex;
  326. align-items: center;
  327. gap: 6px;
  328. }
  329. .plug-btn {
  330. font-size: 11px;
  331. padding: 4px 8px;
  332. border-radius: 4px;
  333. border: none;
  334. cursor: pointer;
  335. font-weight: 500;
  336. }
  337. .plug-btn.on {
  338. background: var(--bambu-green-bg);
  339. color: var(--bambu-green);
  340. }
  341. .plug-btn.off {
  342. background: var(--bg-input);
  343. color: var(--text-secondary);
  344. }
  345. .auto-off-toggle {
  346. display: flex;
  347. align-items: center;
  348. gap: 4px;
  349. font-size: 11px;
  350. color: var(--text-secondary);
  351. }
  352. .toggle-switch {
  353. width: 32px;
  354. height: 18px;
  355. background: var(--bg-input);
  356. border-radius: 9px;
  357. position: relative;
  358. }
  359. .toggle-switch.active {
  360. background: var(--bambu-green);
  361. }
  362. .toggle-switch::after {
  363. content: '';
  364. position: absolute;
  365. width: 14px;
  366. height: 14px;
  367. background: white;
  368. border-radius: 50%;
  369. top: 2px;
  370. left: 2px;
  371. transition: transform 0.2s;
  372. }
  373. .toggle-switch.active::after {
  374. transform: translateX(14px);
  375. }
  376. .plug-footer {
  377. margin-top: 8px;
  378. display: flex;
  379. align-items: center;
  380. gap: 8px;
  381. }
  382. .plug-ip {
  383. font-size: 11px;
  384. color: var(--text-muted);
  385. }
  386. .plug-actions {
  387. margin-left: auto;
  388. display: flex;
  389. gap: 4px;
  390. }
  391. .action-btn {
  392. width: 28px;
  393. height: 28px;
  394. border-radius: 4px;
  395. border: none;
  396. background: var(--bg-input);
  397. color: var(--text-secondary);
  398. cursor: pointer;
  399. display: flex;
  400. align-items: center;
  401. justify-content: center;
  402. }
  403. .action-btn svg {
  404. width: 14px;
  405. height: 14px;
  406. }
  407. /* Comparison layout */
  408. .comparison {
  409. display: flex;
  410. gap: 32px;
  411. flex-wrap: wrap;
  412. align-items: flex-start;
  413. }
  414. .comparison-section {
  415. display: flex;
  416. flex-direction: column;
  417. }
  418. .section-label {
  419. display: inline-block;
  420. font-size: 11px;
  421. font-weight: 600;
  422. padding: 4px 10px;
  423. border-radius: 4px;
  424. margin-bottom: 12px;
  425. text-transform: uppercase;
  426. letter-spacing: 0.5px;
  427. width: fit-content;
  428. }
  429. .section-label.current {
  430. background: var(--text-muted);
  431. color: var(--bg-page);
  432. }
  433. .section-label.new {
  434. background: var(--bambu-green);
  435. color: white;
  436. }
  437. /* NEW 2-Column Grid Layout */
  438. .ams-grid {
  439. display: grid;
  440. grid-template-columns: 1fr 1fr;
  441. gap: 8px;
  442. }
  443. .ams-card {
  444. background: var(--bg-section);
  445. border-radius: 8px;
  446. padding: 8px;
  447. }
  448. .ams-card-header {
  449. display: flex;
  450. align-items: center;
  451. justify-content: space-between;
  452. margin-bottom: 6px;
  453. }
  454. .ams-card-left {
  455. display: flex;
  456. align-items: center;
  457. gap: 6px;
  458. }
  459. .ams-card-stats {
  460. display: flex;
  461. align-items: center;
  462. gap: 6px;
  463. }
  464. .ams-card-stats .stat {
  465. font-size: 10px;
  466. }
  467. .ams-card-stats .stat svg {
  468. width: 10px;
  469. height: 10px;
  470. }
  471. .slots-grid {
  472. display: grid;
  473. grid-template-columns: repeat(4, 1fr);
  474. gap: 4px;
  475. }
  476. .slot {
  477. background: var(--bg-input);
  478. border-radius: 4px;
  479. padding: 4px 2px;
  480. text-align: center;
  481. }
  482. .slot-color {
  483. width: 14px;
  484. height: 14px;
  485. border-radius: 50%;
  486. margin: 0 auto 2px;
  487. border: 1px solid rgba(255, 255, 255, 0.1);
  488. }
  489. .slot-color.empty {
  490. background: transparent;
  491. border: 1px dashed var(--text-muted);
  492. }
  493. .slot-type {
  494. font-size: 8px;
  495. color: var(--text-muted);
  496. white-space: nowrap;
  497. overflow: hidden;
  498. text-overflow: ellipsis;
  499. }
  500. .slot-fill {
  501. font-size: 8px;
  502. color: var(--text-muted);
  503. opacity: 0.7;
  504. }
  505. /* Row 3: HT + External (half-size) */
  506. .ams-row-small {
  507. display: grid;
  508. grid-template-columns: repeat(4, 1fr);
  509. gap: 8px;
  510. margin-top: 8px;
  511. }
  512. .ams-card-small {
  513. background: var(--bg-section);
  514. border-radius: 8px;
  515. padding: 6px 8px;
  516. display: flex;
  517. align-items: center;
  518. gap: 6px;
  519. }
  520. .ams-card-small .small-info {
  521. flex: 1;
  522. min-width: 0;
  523. }
  524. .ams-card-small .ams-label {
  525. font-size: 10px;
  526. }
  527. .ams-card-small .slot-type {
  528. font-size: 9px;
  529. }
  530. .external-spool {
  531. width: 20px;
  532. height: 20px;
  533. border-radius: 50%;
  534. border: 2px solid rgba(255, 255, 255, 0.15);
  535. flex-shrink: 0;
  536. }
  537. .note {
  538. font-size: 11px;
  539. color: var(--text-muted);
  540. margin-top: 12px;
  541. padding: 8px;
  542. background: var(--bg-section);
  543. border-radius: 6px;
  544. }
  545. </style>
  546. </head>
  547. <body>
  548. <div class="page-header">
  549. <h1 class="page-title">AMS Section Redesign</h1>
  550. <p class="page-subtitle">Current stacked layout vs. new 2-column grid</p>
  551. </div>
  552. <div class="comparison">
  553. <!-- CURRENT LAYOUT -->
  554. <div class="comparison-section">
  555. <span class="section-label current">Current</span>
  556. <div class="printer-card">
  557. <!-- Header -->
  558. <div class="card-header">
  559. <div class="printer-image">
  560. <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
  561. <rect x="4" y="4" width="16" height="16" rx="2"/>
  562. <path d="M4 10h16"/>
  563. <path d="M10 10v10"/>
  564. </svg>
  565. </div>
  566. <div class="printer-details">
  567. <div class="printer-name-row">
  568. <span class="printer-name">H2D-1</span>
  569. <button class="menu-btn">
  570. <svg viewBox="0 0 24 24" fill="currentColor">
  571. <circle cx="12" cy="5" r="1.5"/>
  572. <circle cx="12" cy="12" r="1.5"/>
  573. <circle cx="12" cy="19" r="1.5"/>
  574. </svg>
  575. </button>
  576. </div>
  577. <div class="printer-model">H2D • 0.4mm • 632h</div>
  578. </div>
  579. </div>
  580. <!-- Badges -->
  581. <div class="badges-row">
  582. <span class="badge badge-green">
  583. <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
  584. <path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/>
  585. <path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/>
  586. </svg>
  587. Connected
  588. </span>
  589. <span class="badge badge-green">-53dBm</span>
  590. <span class="badge badge-green">
  591. <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
  592. <path d="M12 9v2m0 4h.01"/>
  593. <path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"/>
  594. </svg>
  595. OK
  596. </span>
  597. <span class="badge badge-green">
  598. <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
  599. <path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"/>
  600. </svg>
  601. OK
  602. </span>
  603. </div>
  604. <!-- Status -->
  605. <div class="status-section">
  606. <div class="status-row">
  607. <div class="cover-placeholder">
  608. <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
  609. <rect x="3" y="3" width="18" height="18" rx="2"/>
  610. <circle cx="8.5" cy="8.5" r="1.5"/>
  611. <path d="M21 15l-5-5L5 21"/>
  612. </svg>
  613. </div>
  614. <div class="status-info">
  615. <div class="status-label">Status</div>
  616. <div class="status-value">Idle</div>
  617. <div class="progress-bar"></div>
  618. <div class="ready-text">Ready to print</div>
  619. </div>
  620. </div>
  621. </div>
  622. <!-- Temperatures -->
  623. <div class="temp-grid">
  624. <div class="temp-card">
  625. <svg class="temp-icon" viewBox="0 0 24 24" fill="none" stroke="#f97316" stroke-width="2">
  626. <path d="M14 14.76V3.5a2.5 2.5 0 0 0-5 0v11.26a4.5 4.5 0 1 0 5 0z"/>
  627. </svg>
  628. <div class="temp-label">Left / Right</div>
  629. <div class="temp-value">20°C / 19°C</div>
  630. </div>
  631. <div class="temp-card">
  632. <svg class="temp-icon" viewBox="0 0 24 24" fill="none" stroke="#3b82f6" stroke-width="2">
  633. <path d="M14 14.76V3.5a2.5 2.5 0 0 0-5 0v11.26a4.5 4.5 0 1 0 5 0z"/>
  634. </svg>
  635. <div class="temp-label">Bed</div>
  636. <div class="temp-value">20°C</div>
  637. </div>
  638. <div class="temp-card">
  639. <svg class="temp-icon" viewBox="0 0 24 24" fill="none" stroke="#22c55e" stroke-width="2">
  640. <path d="M14 14.76V3.5a2.5 2.5 0 0 0-5 0v11.26a4.5 4.5 0 1 0 5 0z"/>
  641. </svg>
  642. <div class="temp-label">Chamber</div>
  643. <div class="temp-value">21°C</div>
  644. </div>
  645. </div>
  646. <!-- AMS Section - CURRENT STACKED -->
  647. <div class="ams-section">
  648. <div class="ams-stacked">
  649. <!-- AMS-A -->
  650. <div class="ams-row">
  651. <div class="ams-icon-wrapper">
  652. <svg width="56" height="34" viewBox="0 0 52 32" fill="none">
  653. <path fill-rule="evenodd" clip-rule="evenodd" d="M4 0C1.79086 0 0 1.79086 0 4V28C0 30.2091 1.79086 32 4 32H48C50.2091 32 52 30.2091 52 28V4C52 1.79086 50.2091 0 48 0H4ZM44 8H8V24H44V8Z" fill="#2F2E33"/>
  654. <rect x="9.5" y="8" width="6" height="16" fill="#e53935"/>
  655. <rect x="18.5" y="8" width="6" height="16" fill="#1e88e5"/>
  656. <rect x="27.5" y="8" width="6" height="16" fill="#43a047"/>
  657. <rect x="36.5" y="8" width="6" height="16" fill="#f5f5f5"/>
  658. <path fill-rule="evenodd" clip-rule="evenodd" d="M36.5 16H33.5V18.26C33.5 19.92 32.16 21.26 30.5 21.26C28.84 21.26 27.5 19.92 27.5 18.26V16H24.5V18.26C24.5 19.92 23.16 21.26 21.5 21.26C19.84 21.26 18.5 19.92 18.5 18.26V16H15.5V18.26C15.5 19.92 14.16 21.26 12.5 21.26C10.84 21.26 9.5 19.92 9.5 18.26V16H4V28H48V16H42.5V18.26C42.5 19.92 41.16 21.26 39.5 21.26C37.84 21.26 36.5 19.92 36.5 18.26V16Z" fill="#767676"/>
  659. <path fill-rule="evenodd" clip-rule="evenodd" d="M6 9.18C6 6.32 8.32 4 11.18 4H40.82C43.68 4 46 6.32 46 9.18V16H42.5V12.26C42.5 10.6 41.16 9.26 39.5 9.26C37.84 9.26 36.5 10.6 36.5 12.26V16H33.5V12.26C33.5 10.6 32.16 9.26 30.5 9.26C28.84 9.26 27.5 10.6 27.5 12.26V16H24.5V12.26C24.5 10.6 23.16 9.26 21.5 9.26C19.84 9.26 18.5 10.6 18.5 12.26V16H15.5V12.26C15.5 10.6 14.16 9.26 12.5 9.26C10.84 9.26 9.5 10.6 9.5 12.26V16H6V9.18Z" fill="#BFBFBF"/>
  660. </svg>
  661. </div>
  662. <div class="filament-info">
  663. <div class="ams-label">AMS-A</div>
  664. <div class="filament-types">PLA Basic · PETG HF · PLA Basic · PLA Basic</div>
  665. <div class="filament-fills">71% · 50% · 87% · 23%</div>
  666. </div>
  667. <div class="ams-stats">
  668. <div class="stat stat-good">
  669. <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
  670. <path d="M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z"/>
  671. </svg>
  672. 21%
  673. </div>
  674. <div class="stat stat-neutral">20.7°C</div>
  675. </div>
  676. </div>
  677. <!-- AMS-B -->
  678. <div class="ams-row">
  679. <div class="ams-icon-wrapper">
  680. <svg width="56" height="34" viewBox="0 0 52 32" fill="none">
  681. <path fill-rule="evenodd" clip-rule="evenodd" d="M4 0C1.79086 0 0 1.79086 0 4V28C0 30.2091 1.79086 32 4 32H48C50.2091 32 52 30.2091 52 28V4C52 1.79086 50.2091 0 48 0H4ZM44 8H8V24H44V8Z" fill="#2F2E33"/>
  682. <rect x="9.5" y="8" width="6" height="16" fill="#9c27b0"/>
  683. <rect x="18.5" y="8" width="6" height="16" fill="#ff9800"/>
  684. <rect x="27.5" y="8" width="6" height="16" fill="#fdd835"/>
  685. <rect x="36.5" y="8" width="6" height="16" fill="#212121"/>
  686. <path fill-rule="evenodd" clip-rule="evenodd" d="M36.5 16H33.5V18.26C33.5 19.92 32.16 21.26 30.5 21.26C28.84 21.26 27.5 19.92 27.5 18.26V16H24.5V18.26C24.5 19.92 23.16 21.26 21.5 21.26C19.84 21.26 18.5 19.92 18.5 18.26V16H15.5V18.26C15.5 19.92 14.16 21.26 12.5 21.26C10.84 21.26 9.5 19.92 9.5 18.26V16H4V28H48V16H42.5V18.26C42.5 19.92 41.16 21.26 39.5 21.26C37.84 21.26 36.5 19.92 36.5 18.26V16Z" fill="#767676"/>
  687. <path fill-rule="evenodd" clip-rule="evenodd" d="M6 9.18C6 6.32 8.32 4 11.18 4H40.82C43.68 4 46 6.32 46 9.18V16H42.5V12.26C42.5 10.6 41.16 9.26 39.5 9.26C37.84 9.26 36.5 10.6 36.5 12.26V16H33.5V12.26C33.5 10.6 32.16 9.26 30.5 9.26C28.84 9.26 27.5 10.6 27.5 12.26V16H24.5V12.26C24.5 10.6 23.16 9.26 21.5 9.26C19.84 9.26 18.5 10.6 18.5 12.26V16H15.5V12.26C15.5 10.6 14.16 9.26 12.5 9.26C10.84 9.26 9.5 10.6 9.5 12.26V16H6V9.18Z" fill="#BFBFBF"/>
  688. </svg>
  689. </div>
  690. <div class="filament-info">
  691. <div class="ams-label">AMS-B</div>
  692. <div class="filament-types">PETG HF · PLA · PLA-S · PLA-S</div>
  693. <div class="filament-fills">45% · 92% · 15% · 68%</div>
  694. </div>
  695. <div class="ams-stats">
  696. <div class="stat stat-good">
  697. <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
  698. <path d="M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z"/>
  699. </svg>
  700. 16%
  701. </div>
  702. <div class="stat stat-neutral">22.7°C</div>
  703. </div>
  704. </div>
  705. <!-- AMS-C -->
  706. <div class="ams-row">
  707. <div class="ams-icon-wrapper">
  708. <svg width="56" height="34" viewBox="0 0 52 32" fill="none">
  709. <path fill-rule="evenodd" clip-rule="evenodd" d="M4 0C1.79086 0 0 1.79086 0 4V28C0 30.2091 1.79086 32 4 32H48C50.2091 32 52 30.2091 52 28V4C52 1.79086 50.2091 0 48 0H4ZM44 8H8V24H44V8Z" fill="#2F2E33"/>
  710. <rect x="9.5" y="8" width="6" height="16" fill="#00bcd4"/>
  711. <rect x="18.5" y="8" width="6" height="16" fill="#e91e63"/>
  712. <rect x="27.5" y="8" width="6" height="16" fill="#9e9e9e"/>
  713. <rect x="36.5" y="8" width="6" height="16" fill="#f48fb1"/>
  714. <path fill-rule="evenodd" clip-rule="evenodd" d="M36.5 16H33.5V18.26C33.5 19.92 32.16 21.26 30.5 21.26C28.84 21.26 27.5 19.92 27.5 18.26V16H24.5V18.26C24.5 19.92 23.16 21.26 21.5 21.26C19.84 21.26 18.5 19.92 18.5 18.26V16H15.5V18.26C15.5 19.92 14.16 21.26 12.5 21.26C10.84 21.26 9.5 19.92 9.5 18.26V16H4V28H48V16H42.5V18.26C42.5 19.92 41.16 21.26 39.5 21.26C37.84 21.26 36.5 19.92 36.5 18.26V16Z" fill="#767676"/>
  715. <path fill-rule="evenodd" clip-rule="evenodd" d="M6 9.18C6 6.32 8.32 4 11.18 4H40.82C43.68 4 46 6.32 46 9.18V16H42.5V12.26C42.5 10.6 41.16 9.26 39.5 9.26C37.84 9.26 36.5 10.6 36.5 12.26V16H33.5V12.26C33.5 10.6 32.16 9.26 30.5 9.26C28.84 9.26 27.5 10.6 27.5 12.26V16H24.5V12.26C24.5 10.6 23.16 9.26 21.5 9.26C19.84 9.26 18.5 10.6 18.5 12.26V16H15.5V12.26C15.5 10.6 14.16 9.26 12.5 9.26C10.84 9.26 9.5 10.6 9.5 12.26V16H6V9.18Z" fill="#BFBFBF"/>
  716. </svg>
  717. </div>
  718. <div class="filament-info">
  719. <div class="ams-label">AMS-C</div>
  720. <div class="filament-types">PLA-S · PLA-S · PETG · PLA</div>
  721. <div class="filament-fills">33% · 78% · 55% · 41%</div>
  722. </div>
  723. <div class="ams-stats">
  724. <div class="stat stat-good">
  725. <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
  726. <path d="M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z"/>
  727. </svg>
  728. 16%
  729. </div>
  730. <div class="stat stat-neutral">22.9°C</div>
  731. </div>
  732. </div>
  733. <!-- HT-A -->
  734. <div class="ams-row">
  735. <div class="ams-icon-wrapper">
  736. <svg width="56" height="56" viewBox="0 0 21 21" fill="none">
  737. <rect x="8.3" y="5.2" width="3.8" height="5.1" fill="none" stroke="#666" stroke-dasharray="2 1.5" rx="0.3"/>
  738. <path d="M5.88312 4.68555C5.88312 4.13326 6.33083 3.68555 6.88312 3.68555H13.5059C14.0582 3.68555 14.5059 4.13326 14.5059 4.68555V10.3887H5.88312V4.68555Z" stroke="#6B6B6B"/>
  739. <rect x="3.8725" y="10.3887" width="12.7037" height="7.55371" rx="1.2" stroke="#6B6B6B"/>
  740. <path d="M8.21991 5.65234C8.21991 5.3762 8.44377 5.15234 8.71991 5.15234H11.7288C12.005 5.15234 12.2288 5.3762 12.2288 5.65234V10.3887H8.21991V5.65234Z" stroke="#6B6B6B"/>
  741. </svg>
  742. </div>
  743. <div class="filament-info">
  744. <div class="ams-label">HT-A</div>
  745. <div class="filament-types">—</div>
  746. </div>
  747. <div class="ams-stats">
  748. <div class="stat stat-fair">
  749. <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
  750. <path d="M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z"/>
  751. </svg>
  752. 47%
  753. </div>
  754. <div class="stat stat-neutral">19.7°C</div>
  755. </div>
  756. </div>
  757. </div>
  758. </div>
  759. <!-- Smart Plug -->
  760. <div class="smart-plug-section">
  761. <div class="plug-row">
  762. <svg class="plug-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
  763. <polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"/>
  764. </svg>
  765. <span class="plug-name">bamnbuswitch3</span>
  766. <span class="plug-badge on">ON</span>
  767. <span class="plug-power">18W</span>
  768. <div class="plug-controls">
  769. <button class="plug-btn on">On</button>
  770. <button class="plug-btn off">Off</button>
  771. <div class="auto-off-toggle">
  772. Auto-off
  773. <div class="toggle-switch"></div>
  774. </div>
  775. </div>
  776. </div>
  777. <div class="plug-footer">
  778. <span class="plug-ip">192.168.255.133<br/>00488B540200427</span>
  779. <div class="plug-actions">
  780. <button class="action-btn">
  781. <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
  782. <path d="M23 7l-7 5 7 5V7z"/><rect x="1" y="5" width="15" height="14" rx="2"/>
  783. </svg>
  784. </button>
  785. <button class="action-btn">
  786. <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
  787. <path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"/>
  788. </svg>
  789. </button>
  790. </div>
  791. </div>
  792. </div>
  793. <div class="note">4 AMS rows + 1 HT row = 5 rows in AMS section</div>
  794. </div>
  795. </div>
  796. <!-- NEW LAYOUT -->
  797. <div class="comparison-section">
  798. <span class="section-label new">New 2-Column</span>
  799. <div class="printer-card">
  800. <!-- Header (same as current) -->
  801. <div class="card-header">
  802. <div class="printer-image">
  803. <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
  804. <rect x="4" y="4" width="16" height="16" rx="2"/>
  805. <path d="M4 10h16"/>
  806. <path d="M10 10v10"/>
  807. </svg>
  808. </div>
  809. <div class="printer-details">
  810. <div class="printer-name-row">
  811. <span class="printer-name">H2D-1</span>
  812. <button class="menu-btn">
  813. <svg viewBox="0 0 24 24" fill="currentColor">
  814. <circle cx="12" cy="5" r="1.5"/>
  815. <circle cx="12" cy="12" r="1.5"/>
  816. <circle cx="12" cy="19" r="1.5"/>
  817. </svg>
  818. </button>
  819. </div>
  820. <div class="printer-model">H2D • 0.4mm • 632h</div>
  821. </div>
  822. </div>
  823. <!-- Badges (same) -->
  824. <div class="badges-row">
  825. <span class="badge badge-green">
  826. <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
  827. <path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/>
  828. <path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/>
  829. </svg>
  830. Connected
  831. </span>
  832. <span class="badge badge-green">-53dBm</span>
  833. <span class="badge badge-green">
  834. <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
  835. <path d="M12 9v2m0 4h.01"/>
  836. <path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"/>
  837. </svg>
  838. OK
  839. </span>
  840. <span class="badge badge-green">
  841. <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
  842. <path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"/>
  843. </svg>
  844. OK
  845. </span>
  846. </div>
  847. <!-- Status (same) -->
  848. <div class="status-section">
  849. <div class="status-row">
  850. <div class="cover-placeholder">
  851. <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">
  852. <rect x="3" y="3" width="18" height="18" rx="2"/>
  853. <circle cx="8.5" cy="8.5" r="1.5"/>
  854. <path d="M21 15l-5-5L5 21"/>
  855. </svg>
  856. </div>
  857. <div class="status-info">
  858. <div class="status-label">Status</div>
  859. <div class="status-value">Idle</div>
  860. <div class="progress-bar"></div>
  861. <div class="ready-text">Ready to print</div>
  862. </div>
  863. </div>
  864. </div>
  865. <!-- Temperatures (same) -->
  866. <div class="temp-grid">
  867. <div class="temp-card">
  868. <svg class="temp-icon" viewBox="0 0 24 24" fill="none" stroke="#f97316" stroke-width="2">
  869. <path d="M14 14.76V3.5a2.5 2.5 0 0 0-5 0v11.26a4.5 4.5 0 1 0 5 0z"/>
  870. </svg>
  871. <div class="temp-label">Left / Right</div>
  872. <div class="temp-value">20°C / 19°C</div>
  873. </div>
  874. <div class="temp-card">
  875. <svg class="temp-icon" viewBox="0 0 24 24" fill="none" stroke="#3b82f6" stroke-width="2">
  876. <path d="M14 14.76V3.5a2.5 2.5 0 0 0-5 0v11.26a4.5 4.5 0 1 0 5 0z"/>
  877. </svg>
  878. <div class="temp-label">Bed</div>
  879. <div class="temp-value">20°C</div>
  880. </div>
  881. <div class="temp-card">
  882. <svg class="temp-icon" viewBox="0 0 24 24" fill="none" stroke="#22c55e" stroke-width="2">
  883. <path d="M14 14.76V3.5a2.5 2.5 0 0 0-5 0v11.26a4.5 4.5 0 1 0 5 0z"/>
  884. </svg>
  885. <div class="temp-label">Chamber</div>
  886. <div class="temp-value">21°C</div>
  887. </div>
  888. </div>
  889. <!-- AMS Section - NEW 2-COLUMN GRID -->
  890. <div class="ams-section">
  891. <!-- Row 1-2: Up to 4x AMS -->
  892. <div class="ams-grid">
  893. <!-- AMS-A -->
  894. <div class="ams-card">
  895. <div class="ams-card-header">
  896. <div class="ams-card-left">
  897. <svg width="36" height="22" viewBox="0 0 36 22" fill="none">
  898. <rect x="1" y="1" width="34" height="20" rx="2" fill="#2F2E33"/>
  899. <rect x="5" y="5" width="4" height="12" fill="#e53935"/>
  900. <rect x="11" y="5" width="4" height="12" fill="#1e88e5"/>
  901. <rect x="17" y="5" width="4" height="12" fill="#43a047"/>
  902. <rect x="23" y="5" width="4" height="12" fill="#f5f5f5"/>
  903. <rect x="29" y="5" width="2" height="12" fill="#767676"/>
  904. </svg>
  905. <span class="ams-label">AMS-A</span>
  906. </div>
  907. <div class="ams-card-stats">
  908. <div class="stat stat-good">
  909. <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
  910. <path d="M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z"/>
  911. </svg>
  912. 21%
  913. </div>
  914. <div class="stat stat-neutral">20.6°</div>
  915. </div>
  916. </div>
  917. <div class="slots-grid">
  918. <div class="slot">
  919. <div class="slot-color" style="background: #e53935;"></div>
  920. <div class="slot-type">PLA Basic</div>
  921. <div class="slot-fill">71%</div>
  922. </div>
  923. <div class="slot">
  924. <div class="slot-color" style="background: #1e88e5;"></div>
  925. <div class="slot-type">PETG HF</div>
  926. <div class="slot-fill">50%</div>
  927. </div>
  928. <div class="slot">
  929. <div class="slot-color" style="background: #43a047;"></div>
  930. <div class="slot-type">PLA</div>
  931. <div class="slot-fill">87%</div>
  932. </div>
  933. <div class="slot">
  934. <div class="slot-color" style="background: #f5f5f5;"></div>
  935. <div class="slot-type">PLA Basic</div>
  936. <div class="slot-fill">23%</div>
  937. </div>
  938. </div>
  939. </div>
  940. <!-- AMS-B -->
  941. <div class="ams-card">
  942. <div class="ams-card-header">
  943. <div class="ams-card-left">
  944. <svg width="36" height="22" viewBox="0 0 36 22" fill="none">
  945. <rect x="1" y="1" width="34" height="20" rx="2" fill="#2F2E33"/>
  946. <rect x="5" y="5" width="4" height="12" fill="#9c27b0"/>
  947. <rect x="11" y="5" width="4" height="12" fill="#ff9800"/>
  948. <rect x="17" y="5" width="4" height="12" fill="#fdd835"/>
  949. <rect x="23" y="5" width="4" height="12" fill="#212121"/>
  950. <rect x="29" y="5" width="2" height="12" fill="#767676"/>
  951. </svg>
  952. <span class="ams-label">AMS-B</span>
  953. </div>
  954. <div class="ams-card-stats">
  955. <div class="stat stat-good">
  956. <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
  957. <path d="M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z"/>
  958. </svg>
  959. 16%
  960. </div>
  961. <div class="stat stat-neutral">20.7°</div>
  962. </div>
  963. </div>
  964. <div class="slots-grid">
  965. <div class="slot">
  966. <div class="slot-color" style="background: #9c27b0;"></div>
  967. <div class="slot-type">PETG HF</div>
  968. <div class="slot-fill">45%</div>
  969. </div>
  970. <div class="slot">
  971. <div class="slot-color" style="background: #ff9800;"></div>
  972. <div class="slot-type">PLA</div>
  973. <div class="slot-fill">92%</div>
  974. </div>
  975. <div class="slot">
  976. <div class="slot-color" style="background: #fdd835;"></div>
  977. <div class="slot-type">PLA-S</div>
  978. <div class="slot-fill">15%</div>
  979. </div>
  980. <div class="slot">
  981. <div class="slot-color" style="background: #212121;"></div>
  982. <div class="slot-type">PLA-S</div>
  983. <div class="slot-fill">68%</div>
  984. </div>
  985. </div>
  986. </div>
  987. <!-- AMS-C -->
  988. <div class="ams-card">
  989. <div class="ams-card-header">
  990. <div class="ams-card-left">
  991. <svg width="36" height="22" viewBox="0 0 36 22" fill="none">
  992. <rect x="1" y="1" width="34" height="20" rx="2" fill="#2F2E33"/>
  993. <rect x="5" y="5" width="4" height="12" fill="#00bcd4"/>
  994. <rect x="11" y="5" width="4" height="12" fill="#e91e63"/>
  995. <rect x="17" y="5" width="4" height="12" fill="#9e9e9e"/>
  996. <rect x="23" y="5" width="4" height="12" fill="#f48fb1"/>
  997. <rect x="29" y="5" width="2" height="12" fill="#767676"/>
  998. </svg>
  999. <span class="ams-label">AMS-C</span>
  1000. </div>
  1001. <div class="ams-card-stats">
  1002. <div class="stat stat-good">
  1003. <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
  1004. <path d="M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z"/>
  1005. </svg>
  1006. 17%
  1007. </div>
  1008. <div class="stat stat-neutral">22.0°</div>
  1009. </div>
  1010. </div>
  1011. <div class="slots-grid">
  1012. <div class="slot">
  1013. <div class="slot-color" style="background: #00bcd4;"></div>
  1014. <div class="slot-type">PLA-S</div>
  1015. <div class="slot-fill">33%</div>
  1016. </div>
  1017. <div class="slot">
  1018. <div class="slot-color" style="background: #e91e63;"></div>
  1019. <div class="slot-type">PLA-S</div>
  1020. <div class="slot-fill">78%</div>
  1021. </div>
  1022. <div class="slot">
  1023. <div class="slot-color" style="background: #9e9e9e;"></div>
  1024. <div class="slot-type">PETG</div>
  1025. <div class="slot-fill">55%</div>
  1026. </div>
  1027. <div class="slot">
  1028. <div class="slot-color" style="background: #f48fb1;"></div>
  1029. <div class="slot-type">PLA</div>
  1030. <div class="slot-fill">41%</div>
  1031. </div>
  1032. </div>
  1033. </div>
  1034. <!-- AMS-D -->
  1035. <div class="ams-card">
  1036. <div class="ams-card-header">
  1037. <div class="ams-card-left">
  1038. <svg width="36" height="22" viewBox="0 0 36 22" fill="none">
  1039. <rect x="1" y="1" width="34" height="20" rx="2" fill="#2F2E33"/>
  1040. <rect x="5" y="5" width="4" height="12" fill="#8bc34a"/>
  1041. <rect x="11" y="5" width="4" height="12" fill="#ff5722"/>
  1042. <rect x="17" y="5" width="4" height="12" fill="#607d8b"/>
  1043. <rect x="23" y="5" width="4" height="12" fill="#795548"/>
  1044. <rect x="29" y="5" width="2" height="12" fill="#767676"/>
  1045. </svg>
  1046. <span class="ams-label">AMS-D</span>
  1047. </div>
  1048. <div class="ams-card-stats">
  1049. <div class="stat stat-good">
  1050. <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
  1051. <path d="M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z"/>
  1052. </svg>
  1053. 9%
  1054. </div>
  1055. <div class="stat stat-neutral">21.2°</div>
  1056. </div>
  1057. </div>
  1058. <div class="slots-grid">
  1059. <div class="slot">
  1060. <div class="slot-color" style="background: #8bc34a;"></div>
  1061. <div class="slot-type">PLA</div>
  1062. <div class="slot-fill">88%</div>
  1063. </div>
  1064. <div class="slot">
  1065. <div class="slot-color" style="background: #ff5722;"></div>
  1066. <div class="slot-type">ABS</div>
  1067. <div class="slot-fill">62%</div>
  1068. </div>
  1069. <div class="slot">
  1070. <div class="slot-color" style="background: #607d8b;"></div>
  1071. <div class="slot-type">PETG</div>
  1072. <div class="slot-fill">29%</div>
  1073. </div>
  1074. <div class="slot">
  1075. <div class="slot-color" style="background: #795548;"></div>
  1076. <div class="slot-type">PLA</div>
  1077. <div class="slot-fill">95%</div>
  1078. </div>
  1079. </div>
  1080. </div>
  1081. </div>
  1082. <!-- Row 3: HT + External (half-size, 4 across) -->
  1083. <div class="ams-row-small">
  1084. <!-- HT-A -->
  1085. <div class="ams-card-small">
  1086. <svg width="20" height="20" viewBox="0 0 21 21" fill="none">
  1087. <rect x="6" y="4" width="9" height="7" rx="1" fill="#2F2E33" stroke="#6B6B6B"/>
  1088. <rect x="4" y="11" width="13" height="6" rx="1" stroke="#6B6B6B"/>
  1089. <circle cx="10.5" cy="7.5" r="2" fill="none" stroke="#666" stroke-dasharray="2 1"/>
  1090. </svg>
  1091. <div class="small-info">
  1092. <div class="ams-label">HT-A</div>
  1093. <div class="slot-type">Empty</div>
  1094. </div>
  1095. <div class="ams-card-stats">
  1096. <div class="stat stat-fair">
  1097. <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
  1098. <path d="M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z"/>
  1099. </svg>
  1100. 44%
  1101. </div>
  1102. </div>
  1103. </div>
  1104. <!-- HT-B -->
  1105. <div class="ams-card-small">
  1106. <svg width="20" height="20" viewBox="0 0 21 21" fill="none">
  1107. <rect x="6" y="4" width="9" height="7" rx="1" fill="#2F2E33" stroke="#6B6B6B"/>
  1108. <rect x="4" y="11" width="13" height="6" rx="1" stroke="#6B6B6B"/>
  1109. <circle cx="10.5" cy="7.5" r="2" fill="#00acc1"/>
  1110. </svg>
  1111. <div class="small-info">
  1112. <div class="ams-label">HT-B</div>
  1113. <div class="slot-type">PA-CF</div>
  1114. </div>
  1115. <div class="ams-card-stats">
  1116. <div class="stat stat-good">
  1117. <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
  1118. <path d="M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z"/>
  1119. </svg>
  1120. 12%
  1121. </div>
  1122. </div>
  1123. </div>
  1124. <!-- External 1 -->
  1125. <div class="ams-card-small">
  1126. <div class="external-spool" style="background: #b0bec5;"></div>
  1127. <div class="small-info">
  1128. <div class="ams-label">Ext-1</div>
  1129. <div class="slot-type">PLA</div>
  1130. </div>
  1131. </div>
  1132. <!-- External 2 -->
  1133. <div class="ams-card-small">
  1134. <div class="external-spool" style="background: #ffeb3b;"></div>
  1135. <div class="small-info">
  1136. <div class="ams-label">Ext-2</div>
  1137. <div class="slot-type">TPU</div>
  1138. </div>
  1139. </div>
  1140. </div>
  1141. </div>
  1142. <!-- Smart Plug (same as current) -->
  1143. <div class="smart-plug-section">
  1144. <div class="plug-row">
  1145. <svg class="plug-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
  1146. <polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"/>
  1147. </svg>
  1148. <span class="plug-name">bamnbuswitch3</span>
  1149. <span class="plug-badge on">ON</span>
  1150. <span class="plug-power">18W</span>
  1151. <div class="plug-controls">
  1152. <button class="plug-btn on">On</button>
  1153. <button class="plug-btn off">Off</button>
  1154. <div class="auto-off-toggle">
  1155. Auto-off
  1156. <div class="toggle-switch"></div>
  1157. </div>
  1158. </div>
  1159. </div>
  1160. <div class="plug-footer">
  1161. <span class="plug-ip">192.168.255.133<br/>00488B540200427</span>
  1162. <div class="plug-actions">
  1163. <button class="action-btn">
  1164. <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
  1165. <path d="M23 7l-7 5 7 5V7z"/><rect x="1" y="5" width="15" height="14" rx="2"/>
  1166. </svg>
  1167. </button>
  1168. <button class="action-btn">
  1169. <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
  1170. <path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"/>
  1171. </svg>
  1172. </button>
  1173. </div>
  1174. </div>
  1175. </div>
  1176. <div class="note">3 rows total: Row 1-2 for 4x AMS, Row 3 for 2x HT + 2x Ext (half-size)</div>
  1177. </div>
  1178. </div>
  1179. </div>
  1180. </body>
  1181. </html>