/* RETEXTURA_SERVICE - Windows 95 look */
:root{
  --desk:#008080; --face:#c0c0c0; --hi:#ffffff; --lite:#dfdfdf; --shade:#808080; --dark:#000000;
  --title1:#000080; --title2:#1084d0; --ink:#000000; --muted:#404040; --field:#ffffff;
  --ok:#008000; --bad:#c00000; --run:#000080;
  font-family:"MS Sans Serif","Microsoft Sans Serif",Tahoma,"Segoe UI",Arial,sans-serif;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{margin:0;height:100%}
body{background:var(--desk);color:var(--ink);font-size:13px;overflow-x:hidden;min-height:100vh;padding-bottom:40px}
a{color:#0000ee}

/* the bouncing logo (screensaver) lives behind the windows */
.saver.small{font-size:clamp(22px,4vw,52px)}
.saver{position:fixed;left:0;top:0;z-index:0;pointer-events:none;user-select:none;white-space:nowrap;
  font:900 clamp(34px,7vw,88px)/1 "Arial Black","Impact",Arial,sans-serif;letter-spacing:.04em;
  color:hsl(0 100% 55%);will-change:transform;
  -webkit-text-stroke:2px rgba(0,0,0,.35);
  text-shadow:3px 3px 0 rgba(0,0,0,.45),0 0 18px currentColor,0 0 42px currentColor}

.desk{position:relative;z-index:1;max-width:760px;margin:0 auto;padding:24px 16px;display:flex;flex-direction:column;gap:20px}

/* window */
.win{background:var(--face);border:2px solid;border-color:var(--lite) var(--dark) var(--dark) var(--lite);
  box-shadow:inset 1px 1px 0 var(--hi),inset -1px -1px 0 var(--shade),4px 4px 0 rgba(0,0,0,.25);padding:3px}
.title{display:flex;align-items:center;justify-content:space-between;gap:8px;height:22px;padding:0 3px 0 6px;
  background:linear-gradient(90deg,var(--title1),var(--title2));color:#fff;font-weight:bold;font-size:13px}
.ttl{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tbtns{display:flex;gap:2px;flex:none}
.tbtns i,.tbtns a{display:inline-flex;align-items:center;justify-content:center;width:18px;height:16px;font:bold 12px/1 Arial,sans-serif;font-style:normal;
  color:#000;text-decoration:none;background:var(--face);border:1px solid;border-color:var(--hi) var(--dark) var(--dark) var(--hi);box-shadow:inset -1px -1px 0 var(--shade)}
.tbtns a{margin-left:2px}
.body{padding:12px}

/* controls */
fieldset{border:1px solid var(--shade);box-shadow:1px 1px 0 var(--hi),inset 1px 1px 0 var(--hi);margin:0 0 12px;padding:10px 12px 12px}
legend{padding:0 4px}
label{display:block;margin:6px 0 10px}
input[type=file],textarea{display:block;width:100%;margin-top:4px;background:var(--field);color:var(--ink);font:inherit;padding:4px;
  border:2px solid;border-color:var(--shade) var(--hi) var(--hi) var(--shade);box-shadow:inset 1px 1px 0 var(--dark)}
input[type=file]::file-selector-button{font:inherit;margin-right:8px;padding:3px 10px;background:var(--face);
  border:2px solid;border-color:var(--hi) var(--dark) var(--dark) var(--hi)}
textarea{resize:vertical;min-height:54px}
select{display:block;width:100%;margin-top:4px;font:inherit;padding:3px;background:var(--field);border:2px solid;border-color:var(--shade) var(--hi) var(--hi) var(--shade)}
/* drop zone: a sunken white box with a dashed focus frame, like a 95 list view */
.drop{margin:0 0 12px;padding:18px 12px;text-align:center;cursor:pointer;background:var(--field);
  border:2px solid;border-color:var(--shade) var(--hi) var(--hi) var(--shade);box-shadow:inset 1px 1px 0 var(--dark);outline:1px dashed transparent;outline-offset:-8px}
.drop:hover,.drop:focus-visible{outline-color:#000}
.drop.over{background:var(--title1);color:#fff;outline-color:#fff}
.drop.over .muted{color:#dfdfdf}
.drop.has{text-align:left}
.drop>div{margin:3px 0}
.drop-icon{width:40px;height:32px;margin:0 auto 8px!important;background:
  linear-gradient(#ffd800,#e0a800) 0 6px/40px 26px no-repeat,linear-gradient(#ffd800,#e0a800) 0 0/18px 8px no-repeat;
  border-radius:2px;box-shadow:2px 2px 0 rgba(0,0,0,.35)}
.drop.has .drop-icon{display:none}
.picked{list-style:none;margin:8px 0 0;padding:0;text-align:left}
.picked li{padding:2px 0;word-break:break-all}
.btn{display:inline-block;font:inherit;color:#000;text-decoration:none;cursor:pointer;min-width:96px;text-align:center;padding:5px 14px;background:var(--face);
  border:2px solid;border-color:var(--hi) var(--dark) var(--dark) var(--hi);box-shadow:inset -1px -1px 0 var(--shade),inset 1px 1px 0 var(--lite)}
.btn:active{border-color:var(--dark) var(--hi) var(--hi) var(--dark);box-shadow:inset 1px 1px 0 var(--shade);padding:6px 13px 4px 15px}
.btn:focus-visible{outline:1px dotted #000;outline-offset:-5px}
.btn[disabled]{color:var(--shade);text-shadow:1px 1px 0 var(--hi);cursor:default}
.btn.sm{min-width:0;padding:1px 8px}
.row{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:10px 0}
.row.end{justify-content:flex-end}
.muted{color:var(--muted)}
.hint{margin:-4px 0 6px;font-size:12px}

/* progress bar: blue blocks like the 95 copy dialog */
.progress{height:22px;margin:10px 0;padding:2px;background:var(--face);border:2px solid;border-color:var(--shade) var(--hi) var(--hi) var(--shade)}
.progress>div{height:100%;width:0;transition:width .6s;
  background:repeating-linear-gradient(90deg,var(--title1) 0 12px,transparent 12px 14px)}

.statusbar{display:flex;gap:4px;margin-top:4px}
.statusbar span{flex:1;padding:2px 6px;border:1px solid;border-color:var(--shade) var(--hi) var(--hi) var(--shade);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* history list */
.hist .body{padding:8px}
table.list{width:100%;border-collapse:collapse;background:var(--field);border:2px solid;border-color:var(--shade) var(--hi) var(--hi) var(--shade)}
.list th{text-align:left;font-weight:normal;padding:3px 6px;background:var(--face);border:1px solid;border-color:var(--hi) var(--shade) var(--shade) var(--hi)}
.list td{padding:3px 6px;border-bottom:1px dotted var(--lite);white-space:nowrap}
.list td:first-child{white-space:normal;word-break:break-all}
.list tr:hover td{background:var(--title1);color:#fff}
.list tr:hover a{color:#fff}

.st{font-weight:bold}
.st.done{color:var(--ok)} .st.failed{color:var(--bad)} .st.running{color:var(--run)} .st.waiting,.st.queued{color:#806000}
.list tr:hover .st{color:#fff}

/* job page */
.props{display:grid;grid-template-columns:1fr;gap:3px;margin-bottom:10px;padding:8px;background:var(--field);border:2px solid;border-color:var(--shade) var(--hi) var(--hi) var(--shade)}
.props div{display:flex;gap:8px}
.props b{flex:0 0 92px;font-weight:bold}
.props span{word-break:break-word}
.state-line{display:flex;flex-wrap:wrap;gap:10px;align-items:baseline;font-size:15px}
.stages{list-style:none;margin:6px 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:4px}
.stages li{padding:3px 6px 3px 22px;position:relative;border:1px solid var(--shade);background:var(--lite)}
.stages li::before{content:"";position:absolute;left:6px;top:50%;width:9px;height:9px;margin-top:-5px;border:1px solid var(--shade);background:var(--field)}
.stages li.done::before{background:var(--ok)}
.stages li.cur{background:var(--title1);color:#fff}
.stages li.cur::before{background:#ffff00;animation:blink 1s steps(2) infinite}
.stages li.bad::before{background:var(--bad)}
.stages li small{float:right;opacity:.8}
@keyframes blink{50%{opacity:0}}
.ready{display:flex;flex-direction:column;align-items:center;gap:4px;margin:14px 0 6px;text-decoration:none;color:var(--title1)}
.ready .star{font-size:72px;line-height:1;color:#ffd800;text-shadow:2px 2px 0 #806000,0 0 14px #fff200;animation:pulse 1.4s ease-in-out infinite}
.ready span:last-child{font:bold 26px/1.2 "MS Sans Serif",Tahoma,Arial,sans-serif;text-decoration:underline}
.ready:hover span:last-child{color:#0000ee}
@keyframes pulse{50%{transform:scale(1.15) rotate(12deg)}}
@media (prefers-reduced-motion:reduce){.ready .star,.waiting{animation:none}}
.waiting{margin:18px 0 8px;text-align:center;font:bold 28px/1.2 "MS Sans Serif",Tahoma,Arial,sans-serif;color:var(--title1);animation:blink 1.2s steps(2) infinite}
.err{margin:10px 0;padding:8px;background:#fff;border:2px solid var(--bad);color:var(--bad);white-space:pre-wrap;word-break:break-word}
.previews{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px;margin:10px 0}
.previews a{display:block;background:#000;border:2px solid;border-color:var(--shade) var(--hi) var(--hi) var(--shade)}
.previews img{display:block;width:100%;height:auto}
details{margin-top:10px}
summary{cursor:pointer}
pre{margin:6px 0 0;max-height:300px;overflow:auto;padding:6px;background:#000;color:#c0c0c0;font:12px/1.35 "Lucida Console",Consolas,monospace;white-space:pre-wrap;word-break:break-all}

.msg{display:flex;gap:14px;align-items:center;padding:6px 4px}
.icon-err{flex:none;display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;background:var(--bad);color:#fff;font:bold 20px Arial;box-shadow:2px 2px 0 rgba(0,0,0,.4)}
.dialog{max-width:440px;align-self:center;width:100%}

/* taskbar */
.taskbar{position:fixed;left:0;right:0;bottom:0;z-index:5;height:32px;display:flex;align-items:center;gap:4px;padding:2px 3px;background:var(--face);
  border-top:2px solid var(--lite);box-shadow:inset 0 1px 0 var(--hi)}
.start{display:inline-flex;align-items:center;gap:5px;height:24px;padding:0 8px;font-weight:bold;color:#000;text-decoration:none;
  border:2px solid;border-color:var(--hi) var(--dark) var(--dark) var(--hi);box-shadow:inset -1px -1px 0 var(--shade)}
.flag{width:16px;height:14px;background:conic-gradient(from 90deg at 50% 50%,#00a800 0 25%,#ffd800 0 50%,#0058e0 0 75%,#e81010 0);transform:skewY(-6deg)}
.task{flex:1;min-width:0;height:24px;line-height:20px;padding:0 8px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;
  border:2px solid;border-color:var(--dark) var(--hi) var(--hi) var(--dark);background:repeating-conic-gradient(var(--face) 0 25%,var(--hi) 0 50%) 0 0/2px 2px;font-weight:bold}
.tray{height:24px;line-height:20px;padding:0 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:55%;
  border:1px solid;border-color:var(--shade) var(--hi) var(--hi) var(--shade)}
#clock{margin-left:10px}
a.task{color:#000;text-decoration:none}
a.task+a.task{flex:none}

/* login / account */
input[type=email],input[name=code]{display:block;width:100%;margin-top:4px;background:var(--field);color:var(--ink);font:inherit;padding:4px;
  border:2px solid;border-color:var(--shade) var(--hi) var(--hi) var(--shade)}
input[name=code]{font-size:22px;letter-spacing:6px;max-width:220px}
label.check{display:flex;gap:6px;align-items:flex-start}
label.check input{margin-top:3px;flex:none}
.text p{margin:0 0 10px}
h3{margin:16px 0 6px;font-size:14px}

@media (max-width:520px){
  .desk{padding:16px}
  .body{padding:10px}
  .list th:nth-child(2),.list td:nth-child(2){display:none}
  span.task,.tray{display:none}
}
