bmc_hub/static/css/remote.css
Christian 85e019783b Add comprehensive test coverage for case creation, assignment, and remote recovery
- Introduced tests for case creation commands, ensuring proper handling of UUIDs and payloads.
- Added tests for v5 assignment functionality, validating employee identification and group assignment.
- Implemented tests for remote recovery scenarios, including handling network failures and response validation.
- Created tests for hardware label generation and validation, ensuring proper URL formatting and QR code generation.
- Developed extensive tests for remote control functionality, covering connection isolation, command execution, and user permissions.
- Added tests for workflow timer registration, ensuring correct handling of timer states and ownership validation.
2026-10-15 12:17:09 +02:00

20 lines
16 KiB
CSS
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

:root{font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#233d43;background:#f3f6f6;--accent:#087e72;--muted:#73878b;--line:#e0e8e8;--surface:#fff;color-scheme:light}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;min-height:100vh;padding:28px 24px 32px;background:radial-gradient(ellipse at 90% 0,#dfedeb70,transparent 60%),#f3f6f6}main{max-width:1120px;margin:auto}button,input,textarea{font:inherit}button{min-height:44px;border:1px solid transparent;border-radius:12px;padding:12px 16px;background:#087e72;color:white;font-weight:650;cursor:pointer;transition:background .18s,transform .18s}button:hover:not(:disabled){background:#06695f}button:active:not(:disabled){transform:translateY(1px)}button:disabled{opacity:.38;cursor:default}button:focus-visible,a:focus-visible{outline:3px solid #53bdac;outline-offset:3px}a{color:#087e72;text-decoration:none}h1,h2,h3,p{margin-top:0}h1{font-size:23px;letter-spacing:-.8px;margin:2px 0 0}h2{font-size:17px;letter-spacing:-.4px;margin:0}p{line-height:1.6}.eyebrow{display:block;font-size:9px;font-weight:750;letter-spacing:1.6px;color:#71868a}.icon{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0;vertical-align:middle}.icon-defs{position:absolute;width:0;height:0;overflow:hidden}.app-header{display:flex;justify-content:space-between;align-items:center;gap:16px;margin:0 0 30px;padding-bottom:22px;border-bottom:1px solid #dfe8e7}.brand{display:flex;align-items:center;gap:13px}.brand-mark{display:grid;place-content:center;position:relative;width:48px;height:48px;border-radius:15px;background:#113f42;color:white;font-size:28px;font-weight:750;box-shadow:0 5px 12px #153c4015}.brand-mark span{position:absolute;right:6px;bottom:1px;color:#66dbb8;font-size:25px}.brand-subtitle{display:block;font-size:11px;letter-spacing:0;font-weight:400;color:#7d9194;margin-top:4px}#connection{max-width:100%;border:1px solid #dce7e4;border-radius:30px;padding:9px 13px;font-size:10px;color:#4e7470;background:#fff;display:flex;align-items:center;gap:7px}#connection:before{content:"";flex:0 0 6px;height:6px;border-radius:50%;background:var(--connection-dot,#087e72)}#controls{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);grid-template-areas:"heading heading" "hero today" "hero cases" "manual cases" "phone messages" "footer footer";gap:20px;align-items:start}.workspace-heading{grid-area:heading;display:flex;justify-content:space-between;align-items:center;margin-bottom:3px}.workspace-heading h2{font-size:30px;letter-spacing:-1px;margin-top:7px;font-weight:650}#remote-date{font-size:12px;color:#71868a;text-transform:capitalize}section{background:white;border:1px solid #e0e8e8;border-radius:22px;padding:24px;box-shadow:0 5px 20px #1d484104;min-width:0}.section-top{display:flex;justify-content:space-between;align-items:center;gap:12px}.section-heading{display:flex;align-items:center;gap:10px;margin-bottom:20px}.section-icon{display:grid;place-content:center;width:34px;height:34px;border-radius:11px;background:#eef5f3;color:#247f73}.section-icon .icon{width:19px;height:19px}.section-hint{margin-left:auto;font-size:10px;color:#809497}.hero{grid-area:hero;position:relative;overflow:hidden;background:radial-gradient(ellipse at 90% 10%,#28585960,transparent 65%),#123639;color:#eefaf7;border-color:#123639;box-shadow:0 14px 35px #153c4018;padding:26px}.hero .eyebrow{color:#86aaa6}#active-case{font-size:23px;line-height:1.35;margin:17px 0 12px;letter-spacing:-.6px;font-weight:600}#desktop{font-size:9px;color:#96b9b3;display:flex;align-items:center;gap:5px}#desktop:before{content:"";height:5px;width:5px;flex-shrink:0;border-radius:50%;background:#607f79}#desktop.connected:before{background:#75d9b6}#deadline{display:inline-block;font-size:10px;color:#a5c8bf;padding:6px 10px;border:1px solid #46716a;border-radius:8px;margin:0;background:#ffffff06}.timer-dial{width:244px;height:244px;border-radius:50%;border:1px solid #7ba69b38;display:grid;place-items:center;margin:22px auto 24px;position:relative;background:radial-gradient(circle,#28534d44,transparent 66%)}.timer-dial:before{content:"";position:absolute;inset:8px;border:1px dashed #93b5aa20;border-radius:50%}.timer-dial:after{content:"";position:absolute;width:7px;height:7px;top:3px;left:50%;border-radius:50%;background:#96b6aa;box-shadow:0 0 0 5px #96b6aa0d}.timer-face{position:relative;text-align:center;max-width:214px}.timer-caption{display:flex;justify-content:center;align-items:center;gap:6px;font-size:9px;letter-spacing:1.9px;color:#97b8b0;font-weight:650}.timer-caption .icon{width:13px;height:13px}.clock{font-size:46px;font-weight:500;letter-spacing:-2px;font-variant-numeric:tabular-nums;margin:13px 0 9px;line-height:1.15;color:#effff8}#timer-case{font-size:10px;color:#92b4aa;margin:0;max-width:200px;overflow-wrap:anywhere}.hero.running .clock{color:#85ebc0}.hero.running .timer-dial{border-color:#85ebc077}.hero.running .timer-dial:after{background:#85ebc0;box-shadow:0 0 0 5px #85ebc015}.buttons,nav{display:flex;gap:9px}.buttons button{flex:1;padding:13px 6px;font-size:11px}.control-icon{display:block;margin-bottom:8px}.control-icon .icon{height:19px;width:19px}.hero [data-action="start"]{background:#83e2b8;color:#123e32;box-shadow:0 4px 12px #0001}.hero [data-action="start"]:hover:not(:disabled){background:#a4efcf}.hero [data-action="pause"]{background:#ffffff0c;color:#d2e8df;border-color:#57776c77}.hero [data-action="stop"]{background:#ffffff0c;color:#e9d6d4;border-color:#98757166}.hero [data-action="pause"]:hover:not(:disabled),.hero [data-action="stop"]:hover:not(:disabled){background:#ffffff18}label{display:block;font-size:11px;font-weight:500;color:#71898b;margin:18px 0 10px}input,textarea{display:block;width:100%;padding:13px 14px;color:#233d43;background:#f7f9f9;border:1px solid #dfe8e7;border-radius:11px;margin-top:8px;outline:none;font-size:14px;transition:border-color .2s}input:focus,textarea:focus{border-color:#43a18f;box-shadow:0 0 0 3px #43a18f12}input::placeholder,textarea::placeholder{color:#92a3a5}textarea{resize:vertical;min-height:74px}.hero label{color:#9bbcB3;font-size:10px;margin-top:24px}.hero textarea{color:#eaf8ef;background:#0c2b2d66;border-color:#426a60;font-size:12px}.hero textarea::placeholder{color:#799c91}.hero textarea:focus{border-color:#83e2b8}.cases-card{grid-area:cases}.manual-card{grid-area:manual}.messages-card{grid-area:messages}.today-card{grid-area:today;display:flex;align-items:center;justify-content:space-between;gap:12px;background:#e6f1ec;border-color:#d3e7dc;padding:24px}.today-card .eyebrow{color:#699783;font-size:8px;letter-spacing:1px}.today-card .icon{width:12px;height:12px;margin-right:3px}.today-card h2{margin-top:9px;font-size:14px;color:#355e4e}#today{font-size:19px;font-weight:600;letter-spacing:-.6px;margin:0;color:#237d5d;text-align:right}#case-tabs{padding:4px;border-radius:11px;background:#f1f5f4}#case-tabs button{flex:1;min-height:35px;padding:8px;background:white;color:#30695c;box-shadow:0 2px 5px #23483a0c;font-size:11px}#case-tabs button[aria-pressed="false"]{background:transparent;color:#829491;box-shadow:none}#search-form{display:flex;align-items:end;gap:8px;margin:18px 0 14px}#search-form label{flex:1;margin:0;font-size:0}#search-form input{margin:0;font-size:12px}#search-form button{min-height:43px;padding:10px 13px;background:#eaf2ef;color:#467769;font-size:11px}.case{display:block;position:relative;width:100%;text-align:left;border:1px solid #e1eae7;background:white;color:#2d4644;margin:10px 0;padding:16px 30px 16px 16px;font-size:12px;line-height:1.5;border-radius:13px}.case:after{content:"›";position:absolute;right:14px;top:19px;font-size:23px;line-height:1;color:#a2b6ae}.case:hover:not(:disabled){background:#f1f7f4;border-color:#b6d2c3}.case.selected{border-color:#90bea8;background:#f3f9f5}.case small{display:block;margin-top:7px;font-weight:400;color:#8a9e96;font-size:10px;line-height:1.65}.row{border-top:1px solid #e8eeee;padding:16px 0;font-size:12px;line-height:1.6}.row p{color:#849793;font-size:11px;margin:6px 0}.row button{margin:9px 8px 0 0;font-size:11px;padding:10px 12px;min-height:40px}.hero .row{border-color:#43665b;color:#adcfc2}.hero .row button{background:#35564b;color:#d9efe5}.hero .row p{color:#adcfc2}#messages .row:first-child{border:0;padding-top:0}#messages strong{font-size:12px;color:#405951}#messages+[data-action="read"]{width:100%;font-size:10px;background:#f0f5f3;color:#6d8b7f;min-height:42px;margin-top:12px}.manual-card form{display:flex;gap:12px;align-items:end;flex-wrap:wrap}.manual-card label{flex:1;min-width:105px;margin:0}.manual-card button{flex:1;min-width:155px;font-size:10px;background:#eaf2ef;color:#467769}.secondary{background:#edf3f0;color:#527365;border-color:#d6e4dc}.phone-card{grid-area:phone}.phone-card>.section-hint{margin-top:-12px}.call-heading{display:flex;align-items:center;gap:7px;margin:24px 0 12px}.call-heading h3{font-size:10px;letter-spacing:.25px;margin:0;color:#55766a;font-weight:600}.live-dot{width:5px;height:5px;border-radius:50%;background:#59aa87}.count-badge{margin-left:auto;background:#e7f3ec;color:#2d8b63;border-radius:8px;padding:4px 7px;font-size:10px;font-weight:600}.incoming-call{position:relative;border:1px solid #bce0cc;background:#f0faf4;border-radius:13px;padding:14px 14px 14px 46px;margin:8px 0}.incoming-call:before{content:"↙";position:absolute;left:14px;top:13px;font-size:22px;color:#389672}.incoming-call strong{font-size:12px;color:#397457}.incoming-call p,#phone-notice{font-size:10px;overflow-wrap:anywhere;color:#719383;margin:5px 0 0}#incoming-calls{font-size:11px;color:#81968d}#contact-search-form{display:flex;gap:9px;align-items:end;flex-wrap:wrap;margin-top:22px}#contact-search-form label{flex:1;min-width:150px;margin:0;font-size:10px}#contact-search-form input{font-size:12px}#contact-search-form button{font-size:11px;padding:13px 12px}#contact-results .row{margin-top:12px}#contact-results button{max-width:100%;overflow-wrap:anywhere;background:#edf6f1;color:#267655;border:1px solid #cee4d8}#phone-notice:empty{display:none}#phone-notice:not(:empty){margin-top:16px;padding:12px;background:#f3f8f4;border-radius:10px}#check-call,#clear-call{margin-top:10px;font-size:11px}.remote-footer{grid-area:footer;display:flex;justify-content:space-between;align-items:center;gap:16px;color:#98aaa6;font-size:9px;padding:12px 4px}.remote-footer button{background:transparent;color:#879d94;border:0;min-height:36px;padding:8px 0;font-size:9px}.remote-nav{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);width:330px;max-width:calc(100% - 36px);padding:7px;border:1px solid #dde8e1;border-radius:22px;background:#fffffff2;backdrop-filter:blur(16px);box-shadow:0 6px 30px #17452d15;z-index:20;gap:4px}.remote-nav a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;min-height:50px;border-radius:15px;font-size:9px;color:#8c9d95}.remote-nav .icon{width:20px;height:20px}.remote-nav a[aria-current]{background:#eaf4ee;color:#277a54}.warning,#deadline.warning{color:#ad7b26;background:#fff7e4;border-color:#f1d79e}.overdue,#deadline.overdue{color:#b6545e;background:#fff0f0;border-color:#efc6cc}.case small.warning,.case small.overdue{padding:3px 6px;border-radius:5px}#notice:empty{display:none}#notice:not(:empty),#uncertain{background:#fff8e8;border:1px solid #eadcbc;border-radius:13px;padding:14px;margin:0 0 16px;color:#977d43;font-size:12px}#uncertain button{font-size:12px;margin-right:8px}.remote-manage main{max-width:760px}.remote-manage section{margin:18px 0}.remote-manage section>p{color:#85958d;font-size:12px}.back-link{font-size:12px;border:1px solid #d4e2d9;padding:9px 12px;border-radius:10px}.remote-manage .clock{font-size:clamp(23px,6vw,40px);letter-spacing:1px;overflow-wrap:anywhere;color:#267951}.remote-manage #new-code{padding:18px;background:#eff7f1;border-radius:14px;margin-top:18px}.remote-manage #code{display:block;margin:12px 0}.login-emblem{width:56px;height:56px;display:grid;place-items:center;border-radius:18px;background:#eaf5ed;color:#328f69;margin:0 auto 25px}.login-emblem .icon{width:29px;height:29px}#login{max-width:420px;margin:55px auto;padding:32px;box-shadow:0 16px 45px #18483308}#login h2{font-size:25px;text-align:center;margin:12px 0 10px;letter-spacing:-.8px}#login>.eyebrow{text-align:center;font-size:8px}.login-intro{text-align:center;font-size:12px;color:#8c9e96;margin-bottom:28px}#login button{width:100%;margin-top:17px;background:#184d3e;border-radius:12px}#pin{letter-spacing:7px}#code{letter-spacing:1.5px}dialog{width:calc(100% - 32px);max-width:480px;border:1px solid #dbe5df;border-radius:22px;background:white;color:#2c4940;padding:26px;box-shadow:0 20px 80px #0002}dialog p{font-size:13px;color:#8a9d92}dialog::backdrop{background:#14352e66;backdrop-filter:blur(6px)}dialog .buttons{flex-wrap:wrap}dialog button{min-width:100px}[hidden]{display:none!important}
@media(min-width:700px){.remote-mobile{padding-bottom:105px}.remote-nav{bottom:20px}.hero{min-height:535px}}
@media(max-width:699px){html{scroll-padding-top:24px}body{padding:22px 18px calc(105px + env(safe-area-inset-bottom))}.app-header{gap:12px;margin-bottom:22px;padding-bottom:19px;align-items:start}.brand-mark{width:42px;height:42px;font-size:25px;border-radius:13px}.brand{gap:10px}.brand .eyebrow{font-size:8px;letter-spacing:1.3px}h1{font-size:20px}.brand-subtitle{font-size:9px;margin-top:5px}#connection{font-size:8px;padding:8px;gap:5px;max-width:125px;line-height:1.5}#connection:before{width:5px;height:5px;flex-basis:5px}#controls{display:flex;flex-direction:column;gap:16px}#controls>section{width:100%;padding:21px;border-radius:20px}.workspace-heading{width:100%;order:-1;margin:0 0 1px}.workspace-heading h2{font-size:26px;margin-top:5px}#remote-date{font-size:10px;max-width:105px;text-align:right}.workspace-heading .eyebrow{font-size:8px;letter-spacing:1.4px}.hero{order:0}.today-card{order:1}.phone-card{order:2}.cases-card{order:3}.manual-card{order:4}.messages-card{order:5}.remote-footer{order:6;width:100%;font-size:8px}.remote-footer button{font-size:8px}#active-case{font-size:20px;margin:15px 0 10px}.timer-dial{width:226px;height:226px;margin:18px auto 21px}.clock{font-size:44px;letter-spacing:-1.8px}.buttons button{font-size:10px;padding:12px 5px;border-radius:11px}.hero label{margin-top:21px}.section-heading{margin-bottom:18px}.section-hint{font-size:9px}.section-heading h2{font-size:15px}#today{font-size:16px}.today-card h2{font-size:12px}.today-card .eyebrow{font-size:7px}.today-card .icon{width:11px;height:11px}.remote-nav{bottom:calc(12px + env(safe-area-inset-bottom))}#login{margin:35px auto;padding:27px}.remote-manage h1{font-size:17px}.remote-manage .brand .eyebrow{font-size:8px}.back-link{font-size:10px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}
@media(max-width:359px){.app-header{flex-wrap:wrap}#connection{max-width:100%;margin-left:52px}}
/* Day plan leads the remote workspace; avoid fixed blurred layers on mobile. */
#controls{grid-template-areas:"heading heading" "day hero" "day today" "cases manual" "phone messages" "footer footer"}
.day-card{grid-area:day}.day-card .section-heading{margin-bottom:12px}
.day-plan-item{display:flex;align-items:flex-start;gap:12px;padding:13px 0;border-bottom:1px solid var(--line)}
.day-plan-item:last-child{border-bottom:0}.day-plan-time{flex:0 0 86px;font-size:12px;font-weight:650;color:var(--accent)}
.day-plan-item strong{font-size:14px;display:block}.day-plan-item small{display:block;font-size:11px;color:var(--muted);margin:4px 0}
.day-plan-item button{font-size:11px;padding:7px 11px;min-height:32px;margin-top:6px}
#day-status,#screen-awake-status{display:block;font-size:11px;color:var(--muted);margin:8px 0}
#screen-awake{font-size:11px;min-height:32px;padding:7px 10px}
.remote-nav{background:#fff;backdrop-filter:none}
@media(max-width:699px){.day-card{order:-1}.workspace-heading{order:-2}.remote-nav{position:sticky;transform:none;left:auto;bottom:0;width:100%;max-width:none;order:7;margin-top:10px}.timer-dial{width:170px;height:170px;margin:12px auto}.timer-dial .clock{font-size:33px}}